https://www.acmicpc.net/problem/7662
풀이: 우선순위 큐를 이용한 문제이다.
먼저, 우선순위 큐를 두개를 만든다.
만들어진 두 개의 우선순위 큐는 한 개는 오름차순, 한 개는 내림차순으로 정렬하여 사용한다.
다만 이 때, 하나의 우선순위 큐에서 하나의 변수를 삭제했을 때, 다른 우선순위 큐에서 이 변수가 삭제됬는지를 모르므로, Visit 변수를 두어 이 변수가 삭제됐음을 알 수 있게 해준다.
‘D 1’ 이 입력되어 최댓값을 삭제해야 하는 경우에는 오름차순에서,
‘D -1’이 입력되어 최솟값을 삭제해야 하는 경우에는 내림차순에서 삭제한다.
이때, 삭제되었음을 visit변수에 나타내준다.
https://www.acmicpc.net/problem/6593
풀이: BFS 문제이다.
현재 위치에서 오른쪽, 왼쪽, 위, 아래, 앞, 뒤 6방향을 모두 검사하고 갈 수 있다면, 큐에 집어넣는 방식으로 풀 수 있다.
주의사항
이미 방문한 위치는 표시하여 다시 방문하지 않게 해주도록 하자.
출력 형식을 주의 깊게 보자. 틀렸습니다의 절반 이상이 이 문제일 가능성이 높다.
처음에 파이썬으로 풀었는데 답 제출에서 IndexOutOfBound가 뜨더라… 분명히 정답이 뜬 c++ 코드와 같은 코드인데 문제를 모르겠다.
https://www.acmicpc.net/problem/4811
풀이: 카탈란 수 문제이다.
깔끔하게 카탈란 수로 풀어주자.
$${2nCn \over n + 1}$$
코드: 사용언어 : python
1 2 from math import factorial as f while a:=int(input()): print(f(2*a)//(f(a)*f(a+1)))
https://www.acmicpc.net/problem/9252
풀이: 0 A C A Y K P C 0 1 1 1 1 1 A 1 1 2 2 2 2 P 1 1 2 2 2 2 C 1 2 2 2 2 3 A 1 2 3 3 3 3 K 1 2 3 3 4 4 첫 번째 문자열을 : A
https://www.acmicpc.net/problem/2493
풀이: 현재 탑의 높이보다 더 높은 위치에 있는 탑을 찾아야 하므로 스택을 이용하도록 한다.
탑의 맨 오른쪽 부터 계산을 시작한다.
현재 위치에 탑의 높이가 스택의 top에 있는 탑의 높이보다 높다면, 스택의 top을 pop 하고, 그 탑의 수신탑의 위치값을 현재 탑의 위치로 바꿔준다.
스택의 top의 있는 탑의 높이가 현재 위치의 탑의 높이보다 작거나 같을 때까지 반복하고,
스택에 현재 탑을 push해준다.
왼쪽 끝까지 모든 탑을 확인했다면, 수신탑의 위치값을 출력해준다. 만약 수신탑을 찾지 못한 탑들은 0으로 출력한다.
https://www.acmicpc.net/problem/1323
풀이: 나머지 연산의 성질을 이용한다.
나머지 연산의 경우 연산에 어디에 나머지 연산을 추가하든 나머지 연산의 값만 동일하다면, 최종 값도 동일하게 나온다.
그러므로 주어진 N을 K로 나눈 나머지를 확인하고,
0이 아니라면, 나온 나머지를 N과 연결하여 다시 K로 나눈 나머지를 확인한다.
0이 나올 때까지 반복한다.
나머지 연산 특성상 일정 개수 이상일 경우 반복하기 때문에 무한루프에 빠질 수 있다. 그러므로 최대 K번을 넘기지 않는다.
코드: 사용언어 : python
1 2 3 4 5 6 7 n,k=map(int,input().