728x90
N = int(input())
list = []
result = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
for _ in range(N):
x,y = map(int, input().split())
list.append([x, y])
for i in range(N):
for j in range(i + 1,N):
if list[i][0] > list[j][0] and list[i][1] > list[j][1]:
result[j] += 1
if list[i][0] < list[j][0] and list[i][1] < list[j][1]:
result[i] += 1
for i in range(N):
print(result[i])
이번 문제는 좀 바보같이 푼 경향이 없지 않다.. 풀게 된 데에는 시간이 얼마 걸리지 않았지만.. 배열을 만들고 채우는 방법이 np.full(50,1)로 해야하는데 import numpy as np가 되지 않기 때문에.. 그냥 썼다.
그리고 각각을 부르트포스 형태로 돌면서 이전 값과 현재 값을 비교하면서 그 자리의 result값을 추가하는 방식으로 구했다..
이를 보완하는 코드는
n = int(input())
temp = []
for i in range(n):
h, w = map(int, input().split())
temp.append((h, w))
for i in temp:
result = 1
for j in temp:
if i[0] < j[0] and i[1] < j[1]:
result += 1
print(result)
이런 방식이 있다.
이 코드에서 주목할 점은 우선 순서대로 배열을 비교할때 처음값부터 쭈우욱 계산하면 처음 값은 바뀌지 않는다는 점을 이용해서 result를 배열로 지정하지 않고 정수로 그때그때 구하고 바로 출력하는 식으로 했다는 것이다.
또한, list[index]대신에 i자체가 이 역할을 대신하고, 그 i에 i[0]식으로 붙이면 temp의 이중배열을 그대로 사용할 수 있다.
728x90
'알고리즘 공부(C++)' 카테고리의 다른 글
1966 프린터 큐 (0) | 2022.08.10 |
---|---|
11047 코인 (0) | 2022.08.09 |
10773 제로 (0) | 2022.08.09 |
11399 ATM (0) | 2022.08.06 |
BOJ 1931 회의실 (0) | 2022.08.05 |