본문 바로가기

2

[BOJ/PYTHON] 3078. 좋은 친구 백준 문제 링크: https://www.acmicpc.net/problem/3078 문제 요약 좋은 친구가 몇 쌍 있는지 구하기 모든 학생은 자신과 반 등수의 차이가 K를 넘으면 친구가 아님 좋은 친구는 이름의 길이가 같아야 함 -> 좋은 친구는 등수의 차이가 K를 넘지 않으며 이름의 길이가 같음 핵심 아이디어 이름 길이에 해당하는 딕셔너리를 사용한다. 키값은 길이, value값은 그 길이인 이름 개수이다. 이름을 순서대로 보면서 일단 큐에 이름을 넣고 딕셔너리에 그 이름 길이에 해당하는 키값에 1을 더해주면 된다. 확인하는 사람의 범위가 k를 넘어가면 앞에서 하나씩 빼준다. 그러면 등수의 차이가 k 이내를 계속 유지하게 된다. 슬라이딩 윈도우를 덱으로 구현한 셈이다. 해당 딕셔너리에서 이름 길이가 같은.. 2023. 6. 1.
[BOJ/PYTHON] 1158. 요세푸스 문제 백준 문제 링크: https://www.acmicpc.net/problem/1158 문제 요약 (N, K)-요세프스 순열 구하기 요세푸스 순열: 원을 이뤄 앉아있는 사람 중 k번째 사람을 순서대로 제거. 핵심 아이디어 문제에서 사람이 원을 이뤄 앉아있다는 내용을 읽고 바로 원형 큐를 생각하면 된다. k번째 사람을 순서대로 제거해야 하는데, rotate로 k번을 돌려줘 제거할 사람을 맨 앞에 오게 만들고, 맨 앞 사람을 pop해주면 된다. 풀이 # silver4-1158. 요세푸스 문제 import sys from collections import deque input = sys.stdin.readline n, k = map(int, input().split()) q = deque(range(1, n+1).. 2023. 6. 1.