안경잡이 구루루

백준 10817 ( 세 수 ) [ C programming ] 본문

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);
    }
}

완성된 코드는 위와 같다.

위는 일일이 경우의 수를 따져서 해결하는 방법을 이용했다.

(설명 귀찮아서 ㅋㅋ 자세한 설명은 위 티스토리 참조)

반응형