solved.ac class 163

[백준 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

[백준 1157] 단어공부 [C]

풀이 입력받은 문자열을 모두 대문자 or 소문자로 바꾸고 아스키코드 값을 이용해서 구하는 방법과, 입력받은 문자열을 수정하지 않고, 아스키코드 값만을 이용하여 구하는 방법이 있다. 먼저 후자의 방법의 경우 idx = (str[i] - 'A') % 32; alphabet[idx]++; 처럼 만약 소문자 'b'(98)를 입력받으면 ( 'b'(98) - 'A'(65) ) % 32 = 1 이므로 alphabet[1]++; 이 된다. 하지만, 제출결과는 틀린것으로 나온다. 위 코드의 문제점이라면, str[i] - 'A' 값이 26~31 사이의 값이 나오는 경우이다. 이러한 값이 나오기 위해서는 알파벳 대/소문자가 아닌 다른 값이 입력되는 경우로, 제시된 입력 형식과 맞지않는다. 아니 이런 문제 오류는 언제고쳐? ..

[백준 1152] 단어의 개수 [C]

풀이 다른 언어에 비해 문자열에 관한 문제는 문제의 난이도에 비해 C로 풀이하기 힘든만큼 꼭 C를 고집할 필요는 없다. C언어로는 단어의 개수를 세는 방식이 아닌, 공백의 개수를 세고, 경우의 수를 따지는 방식이 더 효율적인 듯 하다. 엔터를 입력할 때 까지 계속 입력받는다. 공백 하나만 입력되는 경우도 고려해야한다. 마지막 단어 뒤에 공백이 있거나 없을 수 있어서 len - 1로 맨 끝의 공백이나, 단어의 맨 뒤를 고려하지 않는다. 소스코드 #include #include int main(){ char str[1000001]; gets(str); int cnt = 0, len = strlen(str); if (len == 1 && str[0] == ' '){ cnt = -1; }else for(int ..

[백준 1008] A/B [C]

풀이 절대오차 또는 상대오차가 10의 -9승이하만 정답이므로 소수점 9번째 자리까지만 출력해도 정답으로 인정된다. double형을 사용해서 큰 숫자를 계산할 수 있도록 하자 소스코드 #include int main() { double A, B; scanf("%lf %lf", &A, &B); printf("%.9lf", A/B); } 출처 1008번: A/B 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. www.acmicpc.net