BOJ/백준-7568-python

cosmos·2021년 1월 15일
4
post-thumbnail
post-custom-banner

문제📖


풀이🙏

위 문제는 첫째줄에서 사람의 수 N을 입력받은 후 N의 갯수만큼 몸무게와 키를 입력받은 후 등수를 매기는 문제이다.
이렇게만 보면 파이썬 내장함수인 sort를 사용하면 쉽게 구현이 가능하지만 추가 조건으로

  • 몸무게는 더 크지만 키는 더 작다 or 몸무게는 더 적게 나가지만 키는 더 크다
    -> 위와 같을시 등수를 같게한다. 와 같은 조건이 붙는다.

위 문제를 풀면서 파이썬 내장함수인 zip을 사용하면 내부요소가 tuple로 묶인다는것을 처음알았다😂😂
(list append에서 error가 떠서 알게되었다.)
지금까지는 zip을 사용할때 요소가 묶이는것만을 고려했지 묶인 자료형이 tuple인지 List인지까지는 관심이없었던것같다.
N과 몸무게, 키를 입력받고 zip으로 묶은 뒤, 각 요소에 인덱스를 추가하는 방식으로 문제를 구현했다.

코드💻

# boj, 7568 : 덩치, python3
N = int(input())

if N > 51 or N < 2:
    print("N range error")
else:
    weight = [] 
    height = []
    rank = 0
    s = []
    answer = []

    for i in range(N):
        w, h = list(map(int,input().split()))
        if w > 200 or w < 10:
            print("w range error")
            break
        elif h > 200 or h < 10:
            print("h range error")
            break
        else:
            weight.append(w)
            height.append(h)

    deongchi = [list(a) for a in zip(weight,height)]     #zip type convert tuple -> list

    for i in range(N):
        deongchi[i].append(i)    #add index

    w_sort = sorted(deongchi, key = lambda x : x[0])

    for i in range(N):
        weight,height = w_sort[i][0],w_sort[i][1]
        rank = 1
        for j in range(i+1,N):
            if height < w_sort[j][1] and weight < w_sort[j][0] :
                rank += 1
        s.append((w_sort[i][2],rank))

    s.sort()

    for i in range(N):
        answer.append(s[i][1])

    for i in range (0, N):
        print(answer[i], end = ' ')

결과😎

출처📝

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

풀코드

github

post-custom-banner

0개의 댓글