문제

 

내가 작성한 코드
# 전체 사람의 수 N 입력
n = int(input())
w_h = []

# N명의 몸무게와 키 받기
for i in range(n):
    w_h.append(list(map(int, input().split())))
    
# N명의 덩치 등수 출력
for i in range(n):
    print(len([a for a in w_h if (a[0] > w_h[i][0]) and (a[1] > w_h[i][1])]) + 1, end= ' ')

 

코드 설명
# 전체 사람의 수 N 입력
n = int(input())
w_h = []

> 변수 n 은 전체 사람의 수를 입력받기 위한 변수입니다.

> w_h 변수는 전체 사람의 수 N명만큼의 키와 몸무게의 값을 담기 위한 빈 리스트입니다.

> 처음 코드를 작성할 때 n = int(input().split()) 으로 해서 계속 typeerror 가 발생했는데, 조금 천천히 작성하자!!

 

# N명의 몸무게와 키 받기
for i in range(n):
    w_h.append(list(map(int, input().split())))

> N명의 몸무게와 키를 받기 위해서 반복문을 사용했습니다.

> 한 명당 키와 몸무게가 한 줄로 빈칸을 두고 입력되기 때문에 input().split() 함수를 사용하였고, 몸무게와 키를 하나의 리스트로 묶어서 w_h 변수에 담기위해서 list(map(int, input().split())) 함수를 적용하였습니다.

 

# N명의 덩치 등수 출력
for i in range(n):
    print(len([a for a in w_h if (a[0] > w_h[i][0]) and (a[1] > w_h[i][1])]) + 1, end= ' ')

> N명의 덩치 등수를 출력하기 위해서 반복문을 다시 사용하였습니다.

> 입력된 순서대로 출력을 해야하기 때문에 반복문을 한 번 더 사용했습니다.

> 등수 출력을 위해서 list compression을 사용하였고, 자기 자신을 비교하더라도 덩치가 좋다의 조건은 자기의 키와 몸무게 모두 초과로 값이 나와야 하기 때문에 위의 코드로 작성하였습니다.

> 마지막으로 등수가 1부터 시작해야하므로, 1을 더해주었습니다.

+ Recent posts