https://www.acmicpc.net/problem/14467
#풀이 1
n = int(input())
cnt = 0
li = []
for _ in range(n):
cow, road = map(int, input().split())
li.append([cow, road])
for i in range(n):
for j in range(i+1,n):
if li[i][0] == li[j][0]:
if abs(li[i][1]- li[j][1]) == 0:
break
if abs(li[i][1] - li[j][1]) == 1:
cnt += 1
break
print(cnt)
#풀이2
n = int(input())
cow = [-1] * 11
cnt = 0
for _ in range(n):
target_cow, position = map(int, input().split(' '))
if cow[target_cow] == -1:
cow[target_cow] = position
else:
if cow[target_cow] != position:
cnt += 1
cow[target_cow] = position
print(cnt)
풀이 1
입력을 다 받고나서 이중반복문을 통해 소의 번호가 같은지 확인합니다. 만약 소의 위치가 다르다면 cnt값을 더해줍니다.
풀이 2
풀이 1이 복잡해보여서 찾아본 풀이.
만약 소의 번호가 이전에 존재하지 않던 번호라면 cow[target_cow]의 값을 현재 위치의 값으로 변경해줍니다.
만약 위치 값이 다르다면 cnt값에 1을 더해주고 위치값을 현재 위치값으로 변경해주비니다.
(출처: https://tmdrl5779.tistory.com/127)