"꾸준하고 완벽한 한 걸음"

PS/Baekjoon Online Judge 655

[백준 10818] 최소, 최대 [C]

풀이 N개의 정수를 전부 저장할 필요 없이 입력받은 직후 최솟값인지, 최댓값인지 구분해 해결할 수 있다. 소스코드 #include int main() { int N, num, max, min; scanf("%d", &N); for (int i = 0; i max) max = num; } printf("%d %d", min, max); } 출처 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 ..

[백준 10809] 알파벳 찾기 [C]

풀이 모두 소문자만 입력된다는 점을 index로 이용하면 된다. str[i] 'a' 'b' " " 'y' 'z' str[i] - 'a' 0 1 " " 24 25 str[i] - 'a' 를 index로 활용하여, 각 알파벳에 맞는 배열의 값에 처음으로 등장하는 위치(값)을 입력해주면 된다. 단, 중복해서 값이 들어가는 것을 방지하기 위해 배열의 요소 값이 0(초기값)일 때만 입력하도록 한다. 소스코드 #include int main(){ char str[101], cnt[26] = { 0, }; scanf("%s", str); for (int i = 0; str[i] != '\0'; i++) if (!cnt[str[i] - 'a']) cnt[str[i] - 'a'] = i + 1; for (int i = ..

[백준 9498] 시험 성적 [C]

풀이 0~100 사이의 점수만 입력되는 친절한 문제이다. 입력된 점수를 10으로 나눈 값을 index로 활용하여 해결할 수 있다. 소스코드 #include int main(){ int grade; scanf("%d", &grade); putchar("FFFFFFDCBAA"[grade/10]); } 출처 9498번: 시험 성적 시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오. www.acmicpc.net

[백준 10799] 쇠막대기 [C]

풀이 입력된 괄호이후 막대기의 개수를 top라고 하고, 다음과 같은 조건에 의해 result에 막대기의 개수를 더해주면 된다. ')'이전에 '('가 입력되었으면, 쇠막대기가 아니라 레이저이므로 --top한 값을 result에 더해준다. 쇠막대기를 의미하는 ')'만 입력 되었으면, 쇠막대기의 끝 부분에 도달한 것 이기 때문에 1개만 더하고, 현재 막대기의 개수를 1개 감소시킨다. 소스코드 #include #define MAX 100001 int main(){ char stack[MAX]; int top = 0, result = 0; scanf("%s", stack); for (int i = 0; stack[i] != '\0'; i++) if (stack[i] == '(') top++; else{ if (i..

[백준 10798] 세로읽기 [C]

풀이 2중 배열을 통해 입력을 받고 row와 col의 증가 순서를 바꾸어 문자를 하나씩 출력하면 해결할 수 있다. 소스코드 #include int main(){ char str[5][15] = { 0, }; for (int row = 0; row < 5; row++) scanf("%s", str[row]); for (int col = 0; col < 15; col++) for (int row = 0; row < 5; row++) if (str[row][col] != '\0') putchar(str[row][col]); } 출처 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, ..

[백준 10797] 10부제 [C]

소스코드 #include int main(){ int num, car, cnt = 0; scanf("%d", &num); for (int i = 0; i < 5; i++){ scanf("%d", &car); num == car && cnt++; } printf("%d\n", cnt); } 출처 10797번: 10부제 서울시는 6월 1일부터 교통 혼잡을 막기 위해서 자동차 10부제를 시행한다. 자동차 10부제는 자동차 번호의 일의 자리 숫자와 날짜의 일의 자리 숫자가 일치하면 해당 자동차의 운행을 금지하는 www.acmicpc.net

[백준 8958] OX퀴즈 [C]

풀이 입력받은 문자열에서 'O'이면 1 증가시킨 temp를 sum에 더해주고, 만약 'X'가 나오면 temp를 0으로 초기화해 다음 'O' 가 나올 때 다시 1부터 더해줄 수 있도록 하면 된다. C99로 컴파일하기 때문에 조건연산자 사용에 주의해야 한다. 소스코드 #include int main() { char str[80], N; scanf("%d", &N); while (N--) { int temp = 0, sum = 0; scanf("%s", &str); for (int i = 0; str[i] != '\0'; i++) (str[i] == 'O') ? sum += ++temp : (temp = 0); printf("%d\n", sum); } } 출처 8958번: OX퀴즈 "OOXXOXXOOO"와 같..