https://www.acmicpc.net/problem/2562
2562번: 최댓값
9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어
www.acmicpc.net
입력받은 9개의 자연수중 최댓값을 찾고, 그 수가 몇번째로 입력되었는지 출력하는 간단한 문제.
하지만 간단할수록 실수하는 버릇은 좀 고쳐야겠다.
처음 풀이는 다음과 같았다.
#include<stdio.h>
int main(){
int arr[9]; // 길이 9의 int형 배열 선언
int max = 0; // 최댓값을 찾을 int형 변수
int idx; // max의 위치를 찾을 int형 변수
for(int i = 0; i < 9; i++){
scanf("%d", &arr[i]); // 정수를 입력받아 arr[i]에 저장
max = max > arr[i] ? max : arr[i]; // max보다 클 경우 arr[i]를 max에 대입
idx = i; // 위치를 idx에 넣는다
}
printf("%d\n%d", max, idx);
return 0;
}
프로그래밍좀 해본 사람은 금방 눈치 챌 것이다. 당연히 틀릴 것이다.
최댓값인 경우에만 idx에 i값을 넣어야 하는데 참, 거짓 상관없이 넣어서 idx값이 무조건 8이 된다.
그런데 하필 입력 예제 출력과 결과가 똑같게 나와서 필자는 아무생각없이 맞았다고 생각했다.
이를 깨달았고 다음과 같이 작성하여 맞았다.
#include<stdio.h>
int main(){
int arr[9]; // 길이 9의 int형 배열 선언
int max = 0; // 최댓값을 찾을 int형 변수
int idx; // max의 위치를 찾을 int형 변수
for(int i = 0; i < 9; i++){
scanf("%d", &arr[i]); // 정수를 입력받아 arr[i]에 저장
if (max < arr[i]) { // max보다 클 경우
max = arr[i]; // arr[i]를 max에 대입
idx = i+1; // i+1을 idx에 대입. (배열의 인덱스 + 1 = n번째)
}
}
printf("%d\n%d", max, idx);
return 0;
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 4344번 C언어 풀이 (0) | 2021.08.05 |
---|---|
백준 8958번 C언어 풀이 (0) | 2021.08.05 |
백준 1546번 C언어 풀이 (0) | 2021.08.04 |
백준 3052번 C언어 풀이 (0) | 2021.08.04 |
백준 2577번 C언어 풀이 (0) | 2021.08.03 |