[백준] 2920번 - 음계 (파이썬)

2022. 8. 25. 21:45·🎲 알고리즘 공부/백준

[문제]
다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다.

1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다.

연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오.


입출력 예시



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

 

2920번: 음계

다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8

www.acmicpc.net

 


🎨 풀이

💡 전체 코드

import sys

num = list(map(int,sys.stdin.readline().split()))
result = 'mixed'

if num[0] == 1 :
    answer = 1
    result = 'ascending'

    for i in range(len(num)):
        if num[i] != answer :
            result = 'mixed'
            break
        answer += 1

elif num[0] == 8 :
    answer = 8
    result = 'descending'

    for i in range(len(num)):
        if num[i] != answer:
            result = 'mixed'
            break
        answer -= 1

print(result)

> 핵심 : 정렬 후 가운데 수를 출력

 

🍦 코드 설명 (실행 순서대로 나열)

# main

num = list(map(int,sys.stdin.readline().split()))
result = 'mixed'

1. num을 입력받는다.
2. result를 mixed로 초기화해둔다.

 - 일단 mixed로 적어두고 나중에 바꿔주려고 한다.

 

if num[0] == 1 :
    answer = 1
    result = 'ascending'

    for i in range(len(num)):
        if num[i] != answer :
            result = 'mixed'
            break
        answer += 1

3. 만약 num[0]이 1이라면, 4번과 5번을 실행한다.

 - 이 음계는 1 2 3 ... 8 인 오름차순이여야한다.

4. answer에 1을 넣고, result는 asceding으로 바꾼다.

5. 음계와 answer을 하나씩 비교해본다.

 만약 다르다면 result에 mixed를 넣고 for문을 끝내고, 

 만약 같다면 answer에 +1 을 한 후, for문을 이어서 진행한다. 

 

elif num[0] == 8 :
    answer = 8
    result = 'descending'

    for i in range(len(num)):
        if num[i] != answer:
            result = 'mixed'
            break
        answer -= 1

6. 만약 num[0]이 8이라면, 7번과 8번을 실행한다. (위와 방법은 같음)

 - 이 음계는 내림차순이여야함.

7. answer에 8을 넣고, result는 'descending'으로 바꾼다.

8. 음계와 answer을 하나씩 비교해본다.

 만약 다르다면 result를 mixed로 바꾸고, for문을 끝낸다.

 만약 같다면 answer에 -1을 한 후, for문을 이어서 진행한다.

 

print(result)

9. result를 출력한다.

 


끝~

⭐ 느낀점

> 뭔가 answer 없어도 비교를 할 수 있지 않을까 싶긴 했는데.. 방법이 생각이 안나서 answer 변수를 썼다. ㅠㅠ 조금 아쉬움이 남긴 하넴

'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글

[백준] 2576번 - 홀수 (파이썬)  (0) 2022.08.28
[백준] 1924번 - 2007년 (파이썬)  (0) 2022.08.26
[백준] 10988번 - 팰린드롬인지 확인하기 (파이썬)  (0) 2022.08.23
[백준] 2441번 - 별 찍기 4 (파이썬)  (0) 2022.08.22
[백준] 10817번 - 세 수 (파이썬)  (0) 2022.08.21
'🎲 알고리즘 공부/백준' 카테고리의 다른 글
  • [백준] 2576번 - 홀수 (파이썬)
  • [백준] 1924번 - 2007년 (파이썬)
  • [백준] 10988번 - 팰린드롬인지 확인하기 (파이썬)
  • [백준] 2441번 - 별 찍기 4 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (280)
      • 📑 신입일기 (35)
      • 🍪 Web (1)
        • angular (1)
        • JavaScript (0)
      • 🧩 Node.js 공부 (2)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 🎨 Tistory Customizing (1)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 📗 spring boot 공부 (9)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    찬양추천
    스프링 부트
    충무로
    스프링부트
    행렬덧셈
    BOJ
    티스토리챌린지
    오버워치
    카카오
    codeup
    백준
    오블완
    정처기
    코테
    일기
    50문답
    정보처리기사
    연습문제
    코민이
    신입일기
    코드업
    코린이
    폰켓몬
    nodejs
    피보나치수
    프로그래머스
    til
    6월 목표
    컨텐더스
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[백준] 2920번 - 음계 (파이썬)
상단으로

티스토리툴바