본문 바로가기
코딩테스트/백준 알고리즘

백준 알고리즘 | 10817 : 세 수 (Python / 파이썬)

by 함께 공부해요 2020. 9. 25.


세 수 성공분류

시간 제한

메모리 제한

제출

정답

맞은 사람

정답 비율

1 초

256 MB

103079

46211

40368

46.538%

https://www.acmicpc.net/problem/10817

 

10817번: 세 수

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

www.acmicpc.net


문제

세 정수 A, B, C가 주어진다. 이때, 두 번째로 큰 정수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

출력

두 번째로 큰 정수를 출력한다.

알고리즘 분류

구현


 

백준 알고리즘 # 10817번 : 세 수

출처: https://wikidocs.net/16041

# 풀이 1
a, b, c = map(int, input().split())
x = []
x.append(a)
x.append(b)
x.append(c)

result = sorted(x, reverse = True)

print(result[1])

# 풀이 2
L = list(input().split())

for i in range(len(L)):
    L[i] = int(L[i])

sorted_L = sorted(L, reverse = True)
print(sorted_L[1])

풀이

DFS, BFS 문제를 풀고 나서 풀어서 그런지 정말 쉬웠어요😆

풀이1은 a, b, c를 정수로 받은 뒤 변수 x를 리스트 []로 설정해서 append(추가)해주고

추가한 x를 sorted 함수를 사용해서 result 변수로 reverse = True로 내림차순으로 큰 순서대로 정렬한 뒤

그 중 2번째(기계는 0부터 셈)인 result[1]를 출력하면 끝!

풀이1보다 좀 더 간단하게 풀이한 풀이2를 보면

변수 L로 입력되는 것들을 처음부터 list로 입력받고

for문으로 L의 len만큼 반복하면서 list에 있는 것들을 str(문자열)에서 int(정수)로 바꿔줬어요.

이렇게 바꿔주는 것이 별거 아닌 것 같아 보여도 큰 차이가 나는데요🙌

['20', '30', '10']

[20, 30, 10]

두 개의 차이가 보이시나요?

분명 숫자로 보이지만 int(정수)로 변환하지 않은 str(문자열)은

기계는 숫자로 인식하지 않고 문자로 인식합니다.

이것을 유의해서 int(정수)로 변환시켜 변수 L의 리스트의 값들을 초기화 시킨 후

마찬가지로 sorted_L 변수로 sorted 함수와 reverse = True, 내림차수로 정렬해서 큰 수부터 나오게 하고

sorted_L[1]을 출력하면 2번째로 큰 정수가 출력된다. 끄-읏!👏

세한 코드가 궁금하신 분들은 아래 GitHub 참고해주세요🙏

 

wook2124/Algorithm

Practice algorithm. Contribute to wook2124/Algorithm development by creating an account on GitHub.

github.com

최종 소스코드

댓글