Part3.8_이분탐색(결정알고리즘)&그리디 알고리즘_침몰하는 타이타닉(그리디)

Eugenius1st·2022년 1월 14일
0

Python_algorithm

목록 보기
14/83

내가 생각한 코드

#1. Alt+W+N 입력하고 Alt+W+V :

import sys
sys.stdin = open("input.txt", "rt")

n, m = map(int,input().split())
a= list(map(int,input().split()))
cnt=0
a.sort()

while len(a) != 0:
    if len(a) == 1:
        a.pop(0)
        cnt+=1
        break
    if a[0] + a[-1] <= m:
        a.pop(0)
        a.pop()
        cnt+=1
    else:
        a.pop()
        cnt+=1

print(cnt)

선생님 코드1

#1. Alt+W+N 입력하고 Alt+W+V :

import sys
sys.stdin = open("input.txt", "rt")

n, m = map(int,input().split())
p = list(map(int,input().split()))
cnt=0
p.sort()

while p: #비어있으면 거짓이 된다!!
    if len(p) == 1:#pop할 필요도 없다
        cnt+=1
        break
    if p[0] + p[-1] > m:
        p.pop()
        cnt+=1
    else:
        p.pop(0)
        p.pop()
        cnt+=1

print(cnt)
#pop은 하나 빼면 다음 자료들을 앞으로 밀어준다 >> 일용량 커짐
# 이때 deque 라는 것을 쓴다 !! 앞 뒤로 미는게 아니라 포인트 변수로 지점을 가르키는것>> 효율적

선생님 코드 2 deque


#1. Alt+W+N 입력하고 Alt+W+V :

import sys
from collections import deque # deque import
sys.stdin = open("input.txt", "rt")

n, m = map(int,input().split())
p = list(map(int,input().split()))
cnt=0
p.sort()

p = deque(p) # deque 자료 구조로 바꿔줘야 한다

while p: #비어있으면 거짓이 된다!!
    if len(p) == 1:
        cnt+=1
        break
    if p[0] + p[-1] > m:
        p.pop()
        cnt+=1
    else:
        p.popleft() #여기가 다르다
        p.pop()
        cnt+=1

print(cnt)
profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글