[BaekJoon] 35309번 - 잘 정의된 들여쓰기 [Java][C++]
문제 링크 1. 문제 풀이 들여쓰기 규칙에 맞게 주어진 수열을 배치할 수 있는지 찾는 문제로 들여쓰기는 같은 레벨에 이전 수가 존재하기 않으면 1, 이전 수가 존재하는데 그 후 더 적은 레벨이 존재하면 1, 더 적은 레벨이 존재하지 않으면 해당 수의 다음 수를 적는다. 스택 자료구조를 활용해서 현재 수가 1이면 다음 레벨의 첫 수로 적고 1...
문제 링크 1. 문제 풀이 들여쓰기 규칙에 맞게 주어진 수열을 배치할 수 있는지 찾는 문제로 들여쓰기는 같은 레벨에 이전 수가 존재하기 않으면 1, 이전 수가 존재하는데 그 후 더 적은 레벨이 존재하면 1, 더 적은 레벨이 존재하지 않으면 해당 수의 다음 수를 적는다. 스택 자료구조를 활용해서 현재 수가 1이면 다음 레벨의 첫 수로 적고 1...
문제 링크 1. 문제 풀이 주어진 조건을 보면 $P_1 = K$ 이므로 $P_{P_1} = P_K = P_2$ 다. $1$ 부터 $N$ 까지 서로 다른 정수로 만들어지는 수열이려면 $K = 2$ 여야 한다. $P_2 = a$ 라고 두면 $P_{P_{P_1}} = P_{P_2} = P_a = P_3$ 이다. $1$ 부터 $N$ 까지 서로 다른...
문제 링크 1. 문제 풀이 주어진 격자에 대해 초기엔 모든 칸이 검은색이며 특정 위치를 흰색으로 바꾼 후 전파를 시작해서 전파가 끝났을 때 하얀 칸의 최대 갯수와 해당 시간을 구하는 문제로 격자의 크기가 매우 커서 직접 전파를 하는 방식은 어렵다. 특정 칸을 하얀색으로 바꿨을 때 가로 또는 세로 방향으로 전파가 멈추는데 걸리는 시간을 몫과 ...
문제 링크 1. 문제 풀이 각 운영진은 $K$ 개의 평가 지표가 있고 특정 평가 지표가 다른 모든 운영진 보다 높으면 수장 후보가 된다. 2차원 배열을 활용해서 입력을 받은 후 각 열에서 가장 큰 수가 하나만 존재할 경우 해당 수가 포함된 행을 체크해주고 이후 개수를 세주면 된다. 2. 코드 1. 풀이 [Java] import ...
문제 링크 1. 문제 풀이 래환이가 최대한 늦게 다이어트를 시작하면서 목표 체중을 맞출 수 있는지 찾는 문제로 소개팅 날부터 역순으로 줄일 수 있는 체중을 더해나가서 가능한 순간 멈추면 가장 늦게 시작할 수 있다. 2. 코드 1. 풀이 [Java] import java.io.*; import java.util.*; public...
문제 링크 1. 문제 풀이 $2^n$ 을 십진법으로 표기했을 때 자릿수 $k$ 와, 가장 높은 자리의 숫자 $x$ 가 주어졌을 때, $1$ 부터 $2^n$ 까지의 숫자 중 $4$ 로 시작하는 2의 거듭제곱의 수를 구해야하는 문제다. 2의 거듭제곱의 가장 높은 자리의 숫자를 추적하다보면 규칙을 발견할 수 있는데 아래 5가지 패턴의 조합으로 이...
문제 링크 1. 문제 풀이 주어진 아이들을 오름차순으로 정렬하기 위한 최소 횟수를 구하는 문제로 옮길 아이는 임의의 위치에 배치할 수 있다는 점에서 초기 아이들의 번호에 대한 LIS를 구한 후 LIS에 포함되지 않은 아이들을 적절한 위치에 배치하면 오름차순으로 정렬하면서 최소 횟수로 이동시킬 수 있다. 2. 코드 1. 풀이 [Ja...
문제 링크 1. 문제 풀이 HG 표준음성기호로 암호화된 문자열을 원래 문자열로 복호화할 수 있는지 판단하는 문제로 주어진 문자열에서 현재 바라보는 인덱스를 기준으로 해당 문자로 만들 수 있는 코드로 현재 위치에서 시작하면 복호화가 가능하다는 점을 통해 해당 과정을 전체 문자열에 대해 반복해주면 된다. 2. 코드 1. 풀이 [Jav...
문제 링크 1. 문제 풀이 주어진 수가 30의 배수이면 주어진 수의 각 숫자들의 조합으로 가장 큰 수를 만들고 아니면 -1을 출력하는 문제로 30의 배수는 3의 배수이면서 10의 배수라는 점을 활용하면 해결할 수 있다. 3의 배수는 각 자릿수의 합이 3의 배수이면 3의 배수이고 10의 배수는 0을 가지고 있으면 10의 배수가 된다. 가장 큰...
문제 링크 1. 문제 풀이 $N$ 명이 마라톤에 참여하며 $N - 1$ 명이 완주하지 못했을 때 완주하지 못한 한 명을 찾는 문제로 동명이인이 있을 수 있어서 맵 자료구조를 활용해서 이름을 키, 인원을 값으로 설정해서 참여한 사람을 더하고 완주한 사람을 빼줬다. 그러면 맵에서 값이 1인 사람이 유일하게 존재하게 되며 해당 사람이 완주하지 못...