티스토리 뷰

반응형

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

 

2309번: 일곱 난쟁이

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

www.acmicpc.net

 


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 브루트포스 알고리즘
  • 정렬

 


 

⊙ 문제 접근 과정

 

브론즈 2 맞나..? (더 높여도 될 듯!)

 

투 포인터로 풀었다.

 

우선 list에 9개의 값을 저장해주고 정렬한다.

그리고 그 값들을 전부 더해주고 100을 빼준 값을 변수 searchNum에 저장해준다.

 

마지막으로 투 포인터 알고리즘을 사용해 list에서 두 개를 뽑아 더한 값과 searchNum의 값이 일치하는지 확인하면 된다. 일치하다면 9개의 값이 있는 list에서 그 두개의 값을 제외한 7개의 값들을 출력해주면 된다.


 

⊙ 문제 풀이

 

li = [int(input()) for _ in range(9)]

li.sort()

searchNum = sum(li) - 100
start, end = 0, len(li)-1

while start <= end:
    if searchNum > li[start] + li[end]:
        start += 1
    elif searchNum < li[start] + li[end]:
        end -= 1
    else:
        delFirst, delSecond = start, end
        break

for i in range(9):
    if i not in (delFirst, delSecond):
        print(li[i])

 


⊙ 결과

 


⊙ 마무리

 

 

NONE

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함