[백준 10817] 세 수 (bubble sort)
- 프로그래밍/알고리즘
- 2019. 4. 2.
[백준 10817] 세 수 (bubble sort)
안녕하세요.
오늘은 백준 10817번 세 수라는 문제를 버블소트(bubble sort)를 이용해서 풀어보겠습니다.
(아래 간단한 bubble sort의 설명이 있지만 관심있다면 검색해보는 것을 추천드립니다.)
먼저 썸네일로 쓸 사진부터좀 ㅎㅎ
백준 10817번 문제
문제&조건
세 정수 A, B, C가 주어집니다.
(1크거나 같고 100작거나 같은 수)
이 세 정수가 주어질 때, 두 번째로 큰 정수를 출력
예제 입력 및 출력
예제 입력2 : 20 20 10 --> 예제 출력 : 20
예제 입력3 : 40 40 40 --> 예제 출력 : 40
예제 입력4 : 20 10 10 --> 예제 출력 : 10
[백준10817] 코드
코드는 아래와 같으며 추후 깃허브에 추가할겁니다.
문제 풀이
저는 이 문제를 bubble sort를 이용해서 풀어봤습니다.
bubble sort(거품 정렬)?
1. 인접한 두 수를 비교해서 큰 수를 뒤로 보내는 알고리즘
2. 원소의 이동이 거품이 올라오는 것 같다고 해서 bubble sort라는 이름을 가지게 됨.
3. 다른 정렬 알고리즘보다는 느린 편
4. 하지만 코드가 매우 단순
bubble sort의 자세한 내용은 찾아보시는 것을 추천드립니다.
(매우 간단하고 흔한 알고리즘이라 많이 나와있고 어렵지도 않습니다.)
1. 먼저 for문으로 세 수를 입력을 받아서 배열에 저장합니다.
2. bubble sort를 이용해서 3개의 수를 정렬합니다.
-ex)입력 20 30 10을 입력받으면 10 20 30으로 정렬이 됩니다.
-정렬할 때 사용한 swap함수에 대한 설명은 아래의 글을 참고해주세요.
[프로그래밍/C 언어] - c언어 swap함수 문자와 문자 숫자와 숫자 값을 변경
3. 정렬이 되었으니 두번째로 큰 수를 출력하는 것은 매우간단합니다.
- 3개밖에 안되기 때문에 가장 작은수=array[0], 두 번째= array[1], 가장 큰 수= array[2] 가 됩니다.
- 즉 array[1]을 출력하면 끝~
후기
처음에는 다른 사람들처럼 if문으로 때려박아서 풀려다가 이게 더 편해보여서 이걸로 풀었습니다.
아직은 블로그에 올릴만한 문제가 별로 없네요. 좀 괜찮은 문제를 올리고 싶은데 아직 못풀었습니다. ㅎㅎ
https://www.acmicpc.net/problem/10817