입력코드
#include <stdio.h>
main() {
int narray[9];
int max, i, j;
for (i = 0; i < 9; i++) {
scanf("%d", &narray[i]);
}
max = narray[0];
for (i = 0; i < 9; i++){
if (narray[i] > max)
max = narray[i];
}
for (j = 0; j < 9; j++) {
if (narray[j] == max)
break;
}
printf("%d\n", max);
printf("%d\n", j+1);
}
코드설명
배열과 반복문, 대입 이용하는 문제
#include <stdio.h>
main() {
int narray[9];
int max, i;
scanf("%d", &max);
for (i = 0; i < 9; i++) {
if (narray[i] > max)
max = narray[i];
}
printf("%d\n", max);
printf("%d\n", i);
}
처음에는 이렇게 했다가 배열 안에 입력하는 게 안돼서 뭔가 잘못되었음을 느끼고
↓↓↓ 참고한 사이트
#include <stdio.h>
main() {
int narray[9];
int max, i;
for (i = 0; i < 9; i++) {
scanf("%d", &narray[i]);
max = narray[0];
if (narray[i] > max)
max = narray[i];
}
printf("%d\n", max);
printf("%d\n", i);
}
이렇게 해서 배열 안에는 입력할 수 있게 되었는데 최댓값이 출력되는 게 아니라 마지막 값이 출력되어서
i=0일 때 조건을 만족하지 못해서 바로 그냥 출력되나 싶다가도 그러면 첫 번째 값이 출력돼야 하는 거 아닌가 생각했다.
#include <stdio.h>
main() {
int narray[9];
int max, i;
for (i = 0; i < 9; i++) {
scanf("%d", &narray[i]);
}
max = narray[0];
for (i = 0; i < 9; i++){
if (narray[i] > max)
max = narray[i];
}
printf("%d\n", max);
printf("%d\n", i);
}
반복문을 두 개로 나누어서 작성했더니 최댓값은 이제 제대로 출력되는데 몇 번째 숫자인지가 잘못 출력되었다.
배열에서 첫번째 인덱스가 0이어서 그런가 싶어서 1을 더해주었더니 그게 문제가 아니었나 보다.
찾아보니까 처음부터 max값을 어차피 자연수 값이어서 0으로 잡고 시작하는 분들이 많았는데 내가 원하는 풀이가 아니어서 찾아보다가 아예 index값을 새로운 변수로 지정하는 방법도 있었다.
#include <stdio.h>
int main() {
int a = 0, num[9], index;
for (int i = 0; i < 9; i++) {
scanf("%d", &num[i]);
if (a < num[i]) {
a = num[i];
index = i;
}
}
printf("%d\n%d", a, index + 1);
}
↓↓↓ 참고한 사이트
문제 출처
'C' 카테고리의 다른 글
#7. [백준_C언어] 2739번 : 구구단 (0) | 2021.01.04 |
---|---|
#6. [백준_C언어] 2675번 : 문자열 반복 (0) | 2021.01.03 |
#4. [백준_C언어] 2557번 : Hello World (0) | 2021.01.03 |
#3. [백준_C언어] 2438번 : 별 찍기 - 1 (0) | 2021.01.02 |
#2. [백준_C언어] 1330번 : 두 수 비교하기 (0) | 2021.01.02 |