알고리즘
[백준, 파이썬, 2890번] 카약
hminor
2024. 5. 28. 10:42
반응형
풀이
- 문제를 해결하면서 좀 비효율적인데 이게 맞는것 같아서 그냥 적용해서 해결
- 우선 입력 값이 많이 있기에 import sys로 input 을 재정의 하고
- 이후 현재 카약의 위치를 찾아서 해당 카약 번호에 맞는 li의 인덱스에 넣어주기
- 이후 결과인 result 배열에 2중 for문으로
- 비교 대상 카약인 i와 비교할 대상 카약인 j를 비교하는데
- i와 j 즉 같은 카약이 아니며 비교할 대상 카약이 더 목표 지점에 가깝고
- 같은 거리 위치의 카약과 비교한 적이 없는 경우에만
- 카운팅과 s에 넣어 연산하여 해결
import sys
input = sys.stdin.readline
r,c = map(int,input().split())
li = [0]*(9)
for _ in range(r):
kayak = input().strip('\n')
for i in range(1,len(kayak)-1):
if kayak[i] != ".":
li[int(kayak[i])-1] = i
break
result = [0]*(9)
for i in range(9):
cnt = 1
s = set()
for j in range(9):
if i != j and li[i] < li[j] and li[j] not in s:
cnt += 1
s.add(li[j])
result[i] = cnt
[print(i) for i in result]