728x90
반응형
https://www.acmicpc.net/problem/14467
문제를 풀면서 몰랐던 개념
(1) [Python] 딕셔너리
dict = {}
dict['a'] = 3
dict['b'] = 5
print(dict)
>> {'a': 3, 'b': 5}
dict2 = {'a':3, 'b':5 }
print(dict2['a'])
>> 3
(2) [Python] in / not in 연산자
-> 딕셔너리
: 딕셔너리는 그대로 in / not in 연산을 사용하면 key 값만 확인하게 된다
if a not in arr:
arr[a] = b
print(arr)
# a 값이 arr 딕셔너리에 없다면 arr{}에 {a:b} 추가!!
문제의 접근 방법
- 딕셔너리 사용
- not in 연산자 사용
내가 막혔던 부분
- 소가 방향을 바꿀 때마다 1을(소가 길을 건너간 횟수)를 증가시키는 방법
문제 풀이 방법
(1) 관찰 횟수 n번 입력 받기
(2) 소의 번호와 위치를 저장할 딕셔너리 arr 선언
(3) 소가 길을 건넌 횟수를 셀 변수 count 선언
(4) n번 만큼 반복문을 돌려 소의 번호와 움직인 위치(왼, 오) 를 a,b로 입력받기
(5) 만약 키 값 a (소의 번호)가 딕셔너리 arr에 없다면 키(a)값과 밸류(b)값을 arr에 저장
(6) 키 값 a(소의 번호)가 이미 딕셔너리 arr에 있다면 밸류 값 b(소가 움직인 위치)가 같은지 다른지 판별
(7) 만약 같다면 길을 건너지 않은 것이므로 다시 반복문으로 돌아가기
(8) 같지 않다면 길을 건넌 것이므로 숫자를 1 카운트 해주고 저장 & 그 값을 다시 딕셔너리에 넣기
(9) (4)~(8)의 과정을 반복해서 실행
(10) 소가 길을 건너간 최소 횟수(count) 출력
소스코드
n = int(input())
arr = {}
count = 0
for i in range(n):
a,b = map(int, input().split())
if a not in arr:
arr[a] = b
else:
if arr[a] != b:
count +=1
arr[a] = b
print(count)
728x90
반응형
'백준 write-up > 정렬 & 그리디' 카테고리의 다른 글
[백준] 먹을 것인가 먹힐 것인가 : 7795번 - Python (0) | 2021.07.22 |
---|---|
[백준] 2+1 세일 : 11508번 - Python (0) | 2021.07.22 |
[백준] 아시아 정보올림피아드 : 2535번 - Python (0) | 2021.07.22 |
[백준] 수 정렬하기 5 : 15688번 - Python (0) | 2021.07.21 |
[백준] 통나무 건너뛰기 : 11497번 - Python (0) | 2021.07.21 |