1. 백준 2920번, 음계
2. 생각해보자
- 리스트에서 원소를 차례대로 비교하여 오름차순 / 내림차순을 판단한다.
- 내림차순과 오름차순을 판별할 수 있는 기준 값이 필요하다.
ex) 오름차순 = True, 내림차순 = False 라면 오름차순
ex) 오름차순 = False, 내림차순 = False 라면 혼합차순
ex) 오름차순 = False, 내림차순 = True 라면 내림차순
잠깐!!! 정답을 보기 전에
- 무조건 코드로 구현해야 한다는 강박에서 벗어나자.
- 노트에 간단하게라도 어떤 식으로 이 문제를 해결할지 생각해보자.
- 나의 생각을, 로직을 글로 적어보자.
- 풀이와 코드분석을 보고 이해했다면, 직접 코드를 적어보는 연습을 하자.
3. 풀이 및 코드분석
a = list(map(int, input().split(' ')))
ascending = True
descending = True
for i in range(1, 8):
if a[i] > a[i -1]:
descending = False
elif a[i] < a[i -1]:
ascending = False
if ascending:
print('ascending')
elif descending:
print('descending')
else:
print('mixed')
코드 분석
a = list(map(int, input().split(' ')))
# input().split('구분자'): 공백을 구분자로 사용하여, 입력받은 값을 나눈다.
# map(자료형, 입력값): 입력값 또는 매개변수(parameter)를 원하는 자료형으로 변경한다.
# list(): 리스트 자료구조에 담는다.
ascending = True
descending = True
# 오름차순과 내림차순을 판단할 기본값을 설정한다.
for i in range(1, 8):
if a[i] > a[i -1]:
descending = False
elif a[i] < a[i -1]:
ascending = False
# 총 8개의 입력값을 받기 때문에 원소의 개수는 총 8개다.
# for문에서 index 1번부터 시작하는 이유는 비교를 편하기 하기 위함이다.
# 예를들어, a[1] > a[0]인 경우, 오름차순이기 때문에 descending을 False로 바꾼다.
# a[1] > a[0]인 경우, 내림차순이기 때문에 ascending을 False로 바꾼다.
if ascending:
print('ascending')
elif descending:
print('descending')
else:
print('mixed')
# for문을 완료한 시점에서 ascending과 descending의 값에 따라 다른 문자열을 출력한다.
# ascending과 descending이 모두 False인 경우, 혼합차순을 의미하는 mixed를 출력한다.
4. 주요 메소드
map
- map은 어떤 함수를 이용하여 매개변수를 일괄처리하기 위해 사용되는 함수이다.
- 쉽게 말해서, 모든 요소(매개변수)에 어떤 함수를 일괄적으로 적용하기 위하여 for문을 돌리는 것이라고 생각하자.
기본적인 구조는 다음과 같다.
map(함수, 매개변수)
- 여기서 함수는 매개변수에 적용할 함수이며, 매개변수는 일괄처리를 할 대상이다.
- 실제로 위의 문제에서 적용한 것을 분석해보자.
map(int, input().split(' '))
- 위의 코드는 입력값을 split(' ')을 사용하여 나눈 뒤, 각 요소들의 데이터 타입을 int형으로 변환하는 것을 의미한다.
'Algorithm > 알고리즘 문제풀이' 카테고리의 다른 글
오늘의 알고리즘 (4월 9일) (0) | 2021.04.09 |
---|---|
오늘의 알고리즘(4월 8일) (0) | 2021.04.08 |
오늘의 알고리즘(4월 7일) (0) | 2021.04.07 |
오늘의 알고리즘(4월 6일) (0) | 2021.04.06 |
오늘의 알고리즘(4월 5일) (0) | 2021.04.05 |
댓글