https://www.acmicpc.net/problem/10797

 

10797번: 10부제

서울시는 6월 1일부터 교통 혼잡을 막기 위해서 자동차 10부제를 시행한다. 자동차 10부제는 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 일치하면 해당 자동차의 운행을 금지하는 �

www.acmicpc.net

문제

서울시는 6월 1일부터 교통 혼잡을 막기 위해서 자동차 10부제를 시행한다. 자동차 10부제는 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 일치하면 해당 자동차의 운행을 금지하는 것이다. 예를 들어, 자동차 번호의 일의 자리 숫자가 7이면 7일, 17일, 27일에 운행하지 못한다. 또한, 자동차 번호의 일의 자리 숫자가 0이면 10일, 20일, 30일에 운행하지 못한다.

여러분들은 일일 경찰관이 되어 10부제를 위반하는 자동차의 대수를 세는 봉사활동을 하려고 한다. 날짜의 일의 자리 숫자가 주어지고 5대의 자동차 번호의 일의 자리 숫자가 주어졌을 때 위반하는 자동차의 대수를 출력하면 된다.

입력

첫 줄에는 날짜의 일의 자리 숫자가 주어지고 두 번째 줄에는 5대의 자동차 번호의 일의 자리 숫자가 주어진다. 날짜와 자동차의 일의 자리 숫자는 모두 0에서 9까지의 정수 중 하나이다. 

출력

주어진 날짜와 자동차의 일의 자리 숫자를 보고 10부제를 위반하는 차량의 대수를 출력한다.

소스코드 - 파이썬

import sys
input = sys.stdin.readline

d = int(input())
cars = map(int, input().split())
answer = 0
for c in cars:
    if c == d:
        answer += 1
print(answer)

소스코드 - C++

#include <cstdio>
using namespace std; 

int main(int argc, char** argv) 
{
    int d, car, i;
    int cnt = 0;
    scanf("%d", &d);
    
    for(i=0; i<5; i++) {
        scanf("%d", &car);
        if (d == car) {
            cnt++;
        }
    }
    printf("%d", cnt);
}

소스코드 - Java

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int i, cnt = 0;
        for(i=0; i<5; i++) {
            if(n == sc.nextInt()) {
                cnt++;
            }
        }
        System.out.println(cnt);
    }
}

https://www.acmicpc.net/problem/2446

 

2446번: 별 찍기 - 9

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

해결방안

1. 각 K번째 줄에 대해 다음과 같은 출력을 정의한다.

2. 1 ~ N-1번째 줄에는 별을 (N-K)*2+1개 출력한다.

3. N번째 줄에는 별을 1개 출력한다.

4. N+1 ~ 2N-1번째 줄에는 별을 (K-N)*2+1개 출력한다.

2. 모든 출력은 2*N-1개의 길이를 갖은 문자열 중앙정렬로 출력한다.

소스코드 - 파이썬

import sys
input = sys.stdin.readline

# k : star, n : max_len
def midStar(k, n):
    blank = " "
    star = "*"
    stars = star * k
    blanks = blank * ((n-k)//2)
    return blanks + stars

def printStars(n):
    l = 2*n-1
    for k in range(1,l+1):
        if k == n:
            s = midStar(1, l)
        elif k < n:
            s = midStar((n-k)*2+1, l)
        elif k > n:
            s = midStar((k-n)*2+1, l)
        print(s)

N = int(input())
printStars(N)

소스코드 - C++

#include <cstdio>
#include <string>
#include <iostream>
using namespace std;

string midStar(int k, int n) {
    string blank = " ";
    string star = "*";
    string stars = "";
    int blank_n = (n-k)/2;
    int star_n = k;
    int i;
    for (i=0; i<blank_n; i++) {
        stars.append(blank);
    }
    for (i=0; i<star_n; i++) {
        stars.append(star);
    }
    return stars;
}

int main() {
    int n, k;
    string s;
    scanf("%d", &n);
    
    int l = 2*n-1;
    for(k=1; k<l+1; k++) {
        if (k == n) {
            s = midStar(1, l);
        } else if (k < n) {
            s = midStar((n-k)*2+1, l);
        } else if (k > n) {
            s = midStar((k-n)*2+1, l);
        }
        cout << s << endl;
    }
}

소스코드 - Java

import java.util.*;

public class Main {
    public static String midStar(int k, int n) {
        String blank = new String(" ");
        String star = new String("*");
        String stars = new String("");
        int blank_n = (n-k)/2;
        int star_n = k;
        int i;
        for (i=0; i<blank_n; i++) {
            stars += blank;
        }
        for (i=0; i<star_n; i++) {
            stars += star;
        }
        return stars;
    }    
    
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int l = 2*n-1;
        int k;
        String s = new String("");
        for (k=1; k<l+1; k++) {
            if (k == n) {
                s = midStar(1, l);
            } else if (k < n) {
                s = midStar((n-k)*2+1, l);
            } else if (k > n) {
                s = midStar((k-n)*2+1, l);
            }
            System.out.println(s);
        }
    }
}

https://www.acmicpc.net/problem/14681

 

14681번: 사분면 고르기

문제 흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다. 점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표

www.acmicpc.net

문제

흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다.

예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다.

점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.

입력

첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0)

출력

점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.

해결방안

1. (x > 0 and y > 0) : 1사분면

2. (x < 0 and y > 0) : 2사분면

3. (x < 0 and y < 0) : 3사분면

4. (x > 0 and y < 0) : 4사분면

소스코드 - 파이썬

import sys
input = sys.stdin.readline

def Quadrant(x,y):
    if x > 0:
        if y > 0:
            return 1
        elif y < 0:
            return 4
    elif x < 0:
        if y > 0:
            return 2
        elif y < 0:
            return 3
    return 0

x = int(input())
y = int(input())
q = Quadrant(x,y)
print(q)

소스코드 - C++

#include <cstdio>
using namespace std;

int Quadrant(int x, int y) {
    int q = 0;
    if (x > 0) {
        if (y > 0) {
            q = 1;
        } else if (y < 0) {
            q = 4;
        }
    } else if (x < 0) {
        if (y > 0) {
            q = 2;
        } else if (y < 0) {
            q = 3;
        }
    }
    return q;
}

int main() {
    int x, y, q;
    scanf("%d", &x);
    scanf("%d", &y);
    q = Quadrant(x, y);
    printf("%d", q);
}

소스코드 - Java

import java.util.*;

public class Main {
    public static int Quadrant(int x, int y){
        int q = 0;
        if (x > 0) {
            if (y > 0) {
                q = 1;
            } else if (y < 0) {
                q = 4;
            }
        } else if (x < 0) {
            if (y > 0) {
                q = 2;
            } else if (y < 0) {
                q = 3;
            }
        }
        return q;
    }

    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int y = sc.nextInt();
        int q = Quadrant(x,y);
            
        System.out.println(q);
    }
}

[딥 러닝] 싱글 뉴런 학습 시키기 - 역전파(back propagation) 구현하기


1. MFC로 다이얼로그 구성

1) Toolbox


2. 소스 코드

1) Neuron 클래스에 back propagation 함수 추가

2) Back-Prop 버튼과 target 에디트 박스 값과 연동


3. 실행 결과

초기값 설정

x : 1, Weight : 2, Bias : 3, y : 5, target : 13




딥 러닝에 대해 독학을 하면서 정리한 걸 적고 있습니다.

전공과 무관하며 전문적인 지식이 아니므로 개인적인 의견과 부족하고 틀린 점이 많습니다.

추가 지식 및 잘못된 점을 지적해주시면 공부하는데 많은 도움이 되겠습니다. 감사합니다^^

- 푸어맨


[Reference]

(MFC에서 콘솔창 띄우기) http://poorman.tistory.com/63

(역전파 구현하기) http://blog.naver.com/atelierjpro/220703090092

[딥 러닝] 싱글 뉴런의 작동원리 (Feed-forward 구현하기)


1. MFC로 다이얼로그 구성

1) Toolbox

2) Editbox의 CString 값을 Double로 Get, Set하는 함수 생성

2. Feed-foward 함수 클래스 생성 및 계산 결과 표시


3. 실행 결과





딥 러닝에 대해 독학을 하면서 정리한 걸 적고 있습니다.

전공과 무관하며 전문적인 지식이 아니므로 개인적인 의견과 부족하고 틀린 점이 많습니다.

추가 지식 및 잘못된 점을 지적해주시면 공부하는데 많은 도움이 되겠습니다. 감사합니다^^

- 푸어맨


[Reference]

(위키백과) https://ko.wikipedia.org/wiki/%EB%94%A5_%EB%9F%AC%EB%8B%9D

(C++로 배우는 딥러닝) http://m.blog.naver.com/atelierjpro/220697890605

(C++로 Feed-forward 구현하기) http://blog.naver.com/atelierjpro/220697902502

(인공 뉴런의 작동원리) http://blog.naver.com/atelierjpro/220697901074

+ Recent posts