PS/Baekjoon Online Judge 586

[백준 2675] 문자열 반복 [C]

풀이 반복횟수 R과 문자열 S를 입력받아 문자열의 각 문자가 R만큼 연속되는 새로운 문자열을 출력하면 된다. 문자열을 만들어서 출력하나, 문자를 하나씩 찍어서 출력하나 동일하다. 소스코드 #include int main(){ int T, R; char S[21]; scanf("%d", &T); while (T--){ scanf("%d %s", &R, S); for(int i = 0; i < S[i] != '\0'; i++) for(int j = 0; j < R; j++) putchar(S[i]); putchar(10); } } 출처 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두..

[백준 2577] 숫자의 개수 [C]

풀이 A*B*C를 10으로 나누었을 때 나머지는 1의 자리만 남는다. 남는 수에 해당하는 배열의 index를 증가시키면 0~9의 숫자가 각각 몇 번 쓰였는지 알 수 있다. 1의 자리의 수를 알아낸 후 result를 10으로 나눈 결과에 10으로 나누었을 때의 나머지를 구하는 과정을 반복하면 된다. 소스코드 #include int main() { int A, B, C; scanf("%d %d %d", &A, &B, &C); int result = A*B*C, num[10] = { 0, };; while (result != 0){ num[result % 10]++; result /= 10; } for (int i = 0; i < 10; i++) printf("%d\n", num[i]); } 출처 2577번:..

[백준 9012] 괄호 [C]

풀이 입력되는 괄호가 쌍을 이루는지 묻는 문제이다. 괄호의 개수가 같아도 항상 쌍을 이루는 것이 아님을 유의하자. ex) : ( ) ) ) ( ( ( ) stack 구조에서 top변수를 통해 몇 개의 값을 가지고 있는지 알 수 있었다. 이번 문제에서도 top변수를 이용해 '('와 ')'의 구성비를 알아내 문제를 해결할 수 있다. '('일 때 top++, ')'일 때 top-- 를 하여 stack 구조를 이용한다. (top == 0 일 때 VPS이다.) '('가 ')'보다 적으면 VPS가 아니고 (top == -1), '('가 ')' 보다 많을 때도 VPS가 아니다.(top > 0) 따라서 , top가 0이 아니면 VPS가 아님을 알 수 있다. 소스코드 #include #include int main() ..

[백준 2562] 최댓값 [C]

소스코드 #include int main() { int num, max = 0, cnt; for (int i = 1; i max) { max = num; cnt = i; } } printf("%d\n%d", max, cnt); } 출처 2562번: 최댓값 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어 www.acmicpc.net

[백준 2557] Hello World [C]

풀이 왜 문제 번호가 2557이라는 뒷 번호 인지는 모르겠다만 함정은 없다. "Hello World!"를 출력하자. 문제 번호는 절대 난이도와 비례하지 않는다. 10명 중 6명을 틀리게 만들었다. 문제 번호에 당황해 "를 출력하시오."까지 출력해서 틀린게 아닐까 싶다. 소스코드 #include int main() { puts("Hello World!"); } 출처 2557번: Hello World Hello World!를 출력하시오. www.acmicpc.net

[백준 2475] 검증수 [C]

소스코드 #include int main() { int num[5], result = 0; for (int i = 0; i < 5; i++) scanf("%d", &num[i]); for (int i = 0; i < 5; i++) result += num[i]*num[i] printf("%d", result % 10); } 출처 2475번: 검증수 컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들 www.acmicpc.net

[백준 2439] 별 찍기 - 2 [C]

풀이 공백을 먼저 찍은 후 별을 찍어주면 된다. i j i > j 4 0~5 T T T T F 3 " T T T F F 2 " T T F F F 1 " T F F F F 0 " F F F F F 위 처럼 작동하게 코드를 작성했다. i > J가 거짓(F)일 때 별을 찍는다. 소스코드 #include int main() { int N; scanf("%d", &N); for (int i = N - 1; i >= 0; i--) { for(int j = 0; j j ? ' ' : '*'); putchar(10); } } 출처 2439번: 별 찍기 - 2 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(..

[백준 1546] 평균 [C]

소스코드 #include int main() { int N; float num, temp = 0; double avg = 0; scanf("%d", &N); for (int i = 0; i temp) temp = num; avg += num; } printf("%lf", (avg / temp) / N * 100); } 출처 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net