C언어(C programming)/문제풀이(백준,BaekJoon)
백준 10817 ( 세 수 ) [ C programming ]
구루루(gururu)
2020. 5. 30. 11:10
반응형
나:
#include <stdio.h>
int main() {
int a[3], change = 0;
for (int i = 0; i < 3; i++) {
scanf_s("%d", a + i);
}
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 3; j++) {
if (a[i] > a[j]) {
change = a[i];
a[i] = a[j];
a[j] = change;
}
}
}
printf("%d", a[1]);
return 0;
}
완성된 코드는 위와 같다.
#include <stdio.h>
int main() {
int a[3], change = 0;
for (int i = 0; i < 3; i++) {
scanf_s("%d", a + i);
}
입력 받을 개수가 총 3개로 정해져 있어서 배열을 사용. change는 입력된 자료의 순서를 바꿀때 사용될 임시변수.
반복문 for을 통해 배열에 입력값을 받았다.
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 3; j++) {
if (a[i] > a[j]) {
change = a[i];
a[i] = a[j];
a[j] = change;
}
}
}
printf("%d", a[1]);
return 0;
}
배열의 기준위치는 i, 비교될 배열의 위치는 j로 정해서 for 중첩반복문을 사용했다.
a[i] > a[j] 인 경우 서로의 자리를 바꾼다. 이 과정을 처음부터 끝까지 하게되면 오름차순으로 정렬이 된다.
결국 a[ 1 ] 자리에는 2번째 큰 수가 들어가게 된다.
다른사람:
https://gabii.tistory.com/entry/BaekJoonC-%EB%B0%B1%EC%A4%80-10817%EB%B2%88-%EC%84%B8-%EC%88%98
#include <stdio.h>
void main() {
int a, b, c, min;
scanf("%d %d %d", &a, &b, &c);
min = a;
if (min > b) min = b;
if (min > c) min = c;
if (min == a){
if (b <= c) printf("%d", b);
else printf("%d", c);
}
else if (min == b){
if (a <= c) printf("%d", a);
else printf("%d", c);
}
else{
if (a <= b) printf("%d", a);
else printf("%d", b);
}
}
완성된 코드는 위와 같다.
위는 일일이 경우의 수를 따져서 해결하는 방법을 이용했다.
(설명 귀찮아서 ㅋㅋ 자세한 설명은 위 티스토리 참조)
반응형