김호쭈
DevForYou
김호쭈
전체 방문자
오늘
어제
  • 분류 전체보기 (321)
    • • 데이터베이스(DB) (9)
      • __SQL__ (9)
    • •알고리즘(Algorithm ) (117)
      • 문제풀이 (99)
      • 스터디 (14)
      • 알고리즘 팁 (4)
    • •Compter Science (57)
      • Operating System (25)
      • Computer Network (1)
      • Computer Vision (16)
      • Artificial Intelligence (14)
      • Software Technology (1)
    • • 독서 (36)
      • Design Pattern (24)
      • 객체지향의 사실과 오해 (1)
      • Object Oriented Software En.. (11)
    • • 개발 (26)
      • React (3)
      • node.js (6)
      • Django (11)
      • Spring boot (6)
    • • 개발Tip (4)
      • GitHub (0)
    • •프로젝트 (2)
      • 물물 (2)
    • •App (54)
      • 안드로이드 with Kotlin (50)
      • 코틀린(Kotiln) (4)
    • •회고 (8)
    • •취준일기 (3)
    • • 기타 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 깃허브데스크탑
  • KMU_WINK
  • Remote저장소
  • local저장소
  • 원격저장소
  • ㄱ
  • 로컬저장소
  • GitHubDesktop

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김호쭈

DevForYou

[백준-2920] 음계 파이썬, 오름차순 내림차순 판단하기
•알고리즘(Algorithm )/문제풀이

[백준-2920] 음계 파이썬, 오름차순 내림차순 판단하기

2022. 8. 3. 17:37

# 문제

# 풀이

입력조건이 너무 깔끔하기 때문에 여러 경우의 수를 생각할 필요는 없었다. 또한 8개만 입력이 들어오기 때문에 시간복잡도에대한 생각을 하지 않아도 됐다.

오름차순 경우의 수와 내림차순 경우의 수는 8개의 음계를 정렬, 리버스정렬로 리스트를 재생성하고, 비교해주는 풀이방법을 사용했다.

 

# 다른 풀이 전략

그러나 입력이 이렇게 깔끔하지 않는 문제가 존재할 것이고 데이터가 많아진다면 상당히 비효율적인 방법이 될 것이다. 오름차순과 내림차순은 간단하게 앞-뒤 두개의 데이터쌍만을 비교하면 되기 때문에 반복문을 이용해서 두개의 데이터를 비교해 나가면 더욱 효과적일 것이다. 

내림차순 Flag와 오름차순 Flag를 각각 만들고 조건에 맞지 않는다면 해당 Flag를 Flase로 바꿔준다. 이후 두개의 플래그가 모두 False이면 mixed가 될 것이다. 

 

# 파이썬 정리

sorted() 함수와 sort()함수의 차이점은, 원본리스트를 바꿔주는 것인지 새로운 리스트를 생성하는지이다. sorted()는 원본은 유지하고 새로운 리스트를 반환시키고, sort()는 원본리스트를 정렬한다.

# 코드

"""
  다른 풀이전략.
  간단하게 sort후 비교해도 되지만, 원소가 많아지는 경우에는 불리
  오름차순, 내림차순은 두개의 원소만 비교하면 알 수 있음
  오름차순, 내림차순 두개의 플레그를 설정하고, 비교해가면서 각 플래그의 조건을 만족하지 못하면 False로설정
  두개다 False일 경우는 mixed임
"""
import sys

ASCENDING = "ascending"
DECENDING = "descending"
MIXED = "mixed"

def solve(data):
  sorted_data = sorted(data)
  reversed_data = sorted(data,reverse=True)

  if data == sorted_data:
    return ASCENDING
  elif data == reversed_data:
    return DECENDING
  else:
    return MIXED


if __name__ == '__main__':
  input = list(map(int,sys.stdin.readline().strip().split()))
  answer = solve(input)
  print(answer)

 

# 후기

 

저작자표시 (새창열림)

'•알고리즘(Algorithm ) > 문제풀이' 카테고리의 다른 글

[백준-1874] 스택 수열 파이썬  (0) 2022.08.05
[백준-2798] 블랙잭 파이썬, 3중 반복문 사용  (0) 2022.08.03
[백준-9663] N-Queen 파이썬, 백트랙킹, 파이썬 전역변수, enumerate  (0) 2022.08.03
[백준-11399] ATM 파이썬, 탐욕알고리즘을 이용한 최적해 찾기  (0) 2022.07.28
[백준-1920] 수 찾기 파이썬, 파이썬 한줄 입력받기 및 정수형 리스트 변환, 리스트 슬라이스 시간복잡도  (0) 2022.07.27
    '•알고리즘(Algorithm )/문제풀이' 카테고리의 다른 글
    • [백준-1874] 스택 수열 파이썬
    • [백준-2798] 블랙잭 파이썬, 3중 반복문 사용
    • [백준-9663] N-Queen 파이썬, 백트랙킹, 파이썬 전역변수, enumerate
    • [백준-11399] ATM 파이썬, 탐욕알고리즘을 이용한 최적해 찾기
    김호쭈
    김호쭈
    공부하고 정리하고 기록하기

    티스토리툴바