[백준] 2309번, 일곱난쟁이 (Python)

2021. 7. 2. 20:40·알고리즘/백준
728x90
반응형

문제

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

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

 

코드

height = [int(input()) for _ in range(9)]
total = sum(height)
for i in range(9):
    for j in range(i+1, 9):
        if total - (height[i] + height[j]) == 100:
            h1, h2 = height[i], height[j]
            height.remove(h1)
            height.remove(h2)
            break
    if len(height) < 9:
        break
height.sort()
for i in height:
    print(i)

9개의 입력값들이 주어지고 일곱난쟁이의 키의 합은 100이므로

9개의 입력값들을 전부 더한다음에 두개의 값을 뺏을때 100이 되면 남은 7개의 값이 일곱난쟁이의 키가 된다.

 

h1, h2에 값을 저장하는 이유는 한개의 height 리스트에서 값을 지웠을경우 인덱스에 값이 달라지기 때문에 값을 저장해둔다.

그런다음 pop() 대신에 리스트에 값으로 지울 수 있는 remove를 사용해주면 된다.

 

len(height)가 9보다 작은 경우는 두개의 값을 뺴고난 다음이므로 맨 처음 for문도 빠져나가주면된다.

 

재귀 풀이

height = [int(input()) for _ in range(9)]
check = [False] * 9
result = []
def recursive(index):
    global result
    if index == 9:
        answer = 0
        count = 0
        demo = []
        for i in range(9):
            if check[i]:
                answer += height[i]
                count += 1
                demo.append(height[i])
        if answer == 100 and count == 7:
            demo.sort()
            result = demo
        return
    
    check[index] = True
    recursive(index + 1)

    check[index] = False
    recursive(index + 1)

recursive(0)
for i in result:
    print(i)
반응형
저작자표시 (새창열림)

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

[백준] 14502번, 연구소 (Python)  (0) 2021.07.06
[백준] 14889번, 스타트와 링크 (Python)  (0) 2021.07.04
[백준] 1992번 쿼드트리 (Python)  (0) 2021.03.16
[백준] 11866번 요세푸스 문제 0 (Python)  (0) 2021.03.16
[백준] 1541번 잃어버린 괄호 (Python)  (0) 2021.03.16
'알고리즘/백준' 카테고리의 다른 글
  • [백준] 14502번, 연구소 (Python)
  • [백준] 14889번, 스타트와 링크 (Python)
  • [백준] 1992번 쿼드트리 (Python)
  • [백준] 11866번 요세푸스 문제 0 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196)
      • study (1)
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1)
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    항해마켓
    조합
    실전프로젝트
    알고리즘
    jpa
    SpringBoot
    정리
    항해99
    해결
    인프런
    백준
    코딩테스트
    버그
    회고
    그리디
    브루트포스
    괄호
    SFlash
    파이썬
    후기
    미니프로젝트
    김영한
    spring
    java
    프로그래머스
    에러
    스파르타코딩클럽
    orm
    카카오인턴
    카카오코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[백준] 2309번, 일곱난쟁이 (Python)
상단으로

티스토리툴바