주어진 괄호 문자열이 유효한지 확인하는 문제이다.


왼쪽 괄호 '(' '[' '{' '<' 가 나오면 스택에 삽입하고, 오른쪽 괄호 ')' ']' '}' '>' 가 나오면 스택에서 하나 꺼내 짝이 맞는지 확인한다.



각각의 시작점에서 출발하여 각각의 도착점까지의 길이가 가장 짧은 시작점을 찾는 문제이다.


시작점부터 하나씩 길이를 계산하며, 시간을 줄이기위해, 중간에 계산된 길이가 이미 계산된 최솟값보다 커지면 다음 시작점을 탐색한다.




X지점의 좌표를 먼저 기록해 놓고


한칸씩 위로 올라가면서 출발 지점을 찾는다.


올라갈 때, 사다리의 오른쪽이나 왼쪽의 길이 있으면 해당 길로 이동한다.



이전 100만이하의 소수 문제(링크)에서 사용한 소수 계산법을 이용하여


먼저 모든 소수를 구한 다음 범위 안의 숫자들에 대해 숫자를 포함하였는지 검색한다.




2048게임과 비슷하다고 보면된다.


블록을 왼쪽, 오른쪽, 아래, 위로 이동시키면서 조건에 맞게 움직이는 시뮬레이션이다.


나는 문제 조건에 맞게 동작하도록 전부 반복문을 사용하였더니 다른사람들과 비교하여 6배정도 느린 속도가 나왔다.


연속된 칸을 계산할 때나, 좀더 시간을 줄일 방법을 찾아보면 조금은 더 줄일 수 있을 것 같긴 하다.



출력에는 간단한 규칙이 있다.


1,5번째줄은 같고

2,4번째줄도 같기 때문에 총 3개의 문자열을 만들어서 출력하려고 한다.


1,5번째 줄의 규칙은

먼저 ..# 을 만들고, 입력된 문자열의 길이-1 만큼 ...#을 이어 붙인다. 그리고 마지막에 ..을 추가해주면된다.


2,4번째 규칙은

문자열의 길이 * 2 번만큼 .#을 출력하고, 마지막에 .을 추가한다.


3번째 규칙은

#.알파벳. 을 하나씩 만들어 준다음 마지막에 #을 이어서 추가했다.



종이에 쓰여진 숫자의 개수를 세는 문제이다.


STL을 이용하여 쉽게 해결하였다.


set안에 해당 숫자가 없으면 추가, 있으면 제거하였으며, set에 남은 개수가 문제의 답이 된다.




현재 사람이 앉아있는 좌석의 수를 계산하는 문제이다.


연속된 좌석을 입력받게 된다.

해당 숫자의 차이만큼 더해 앉아있는 좌석수를 계산한다.




입력된 정수 N에 대하여 9가 있는지 확인하는 문제이다.

입력이 10<= N <= 99이기 때문에,

10으로 나눈 나머지가 9인지,

아니면 N을 10으로 나눈 후, 다시 10으로 나눈 나머지가 9인지 판단하였다.



DFS이용해 모든 경우를 다 탐색하여 해결하였다.


주어진 변경 가능한 단어쌍을 기록해 놓는다.


하나의 알파벳을 1:1로 비교해보며, 중복을 줄이기 위해, 이전에 변경한 알파벳이면 다시 변경하지 않도록 하였다.




+ Recent posts