본문 바로가기

분류 전체보기229

17780번: 새로운 게임 (Kotlin) 제한사항 4 ≤ N ≤ 12 4 ≤ K ≤ 10 문제 정리 체스판의 크기는 N * N 체스판의 칸의 색깔은 흰색, 빨간색, 파란색 중 하나 말은 1~K번까지 있다. 말 위에 말을 올릴 수 있다. 이동 방향은 위, 아래, 왼쪽, 오른쪽 4방향 턴마다 모든 말이 번호 순서대로 이동한다. 한 말이 이동할 때 위에 말도 동시에 이동하며, 가장 아래에 있는 말만 이동할 수 있다. 말이 4개 이상 쌓이면 게임 종료 접근 방법 구현 문제인데 생각보다 굉장히 까다로웠습니다. map을 이용해서 key값을 말의 번호, value를 tower로 했습니다. 복잡도 시간복잡도 : O(1000*k) → O(k) → 1000은 문제에서 주어진 제한 횟수이다. 코드 import java.io.BufferedReader import .. 2023. 12. 19.
1946번: 신입 사원(Kotlin) 제한사항 테스트 케이스의 개수 T(1 ≤ T ≤ 20) 지원자의 숫자 N(1 ≤ N ≤ 100,000) 서류 심사 순위와 면접 시험 순위가 주어진다. 문제 정리 서류심사와 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발합니다. 접근 방법 나보다 숫자가 둘다 작은 사람이 있으면 불합격 저는 처음에 서류를 등수순으로 정렬하고, 면접 순서 이전에 최소값을 구하는 방식으로 풀었습니다. 서류 등수로 정렬하게 되면 다음으로 오는 모든 참가자는 면접 순서가 이전 최소 등수보다 높지 않으면 무조건 불합격입니다. 예를 들어, 서류가 1등이고 면접이 4등이라고 생각해봅시다. 일단, 어차피 서류가 1등이라 넘어갑시다. 다음 참가자가 서류가 2등 면접이 5등이라고 생각해봅시다. 서류는 당연히 1등이 .. 2023. 12. 13.
1806번: 부분합(C++, Kotlin) 제한사항 N (10 ≤ N right - left + 1 ? right - left + 1 : minL.. 2023. 12. 13.
9205번: 맥주 마시면서 걸어가기 제한사항 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (t ≤ 50) 각 테스트 케이스의 첫째 줄에는 맥주를 파는 편의점의 개수 n이 주어진다. (0 ≤ n ≤ 100). 다음 n+2개 줄에는 상근이네 집, 편의점, 펜타포트 락 페스티벌 좌표가 주어진다. 각 좌표는 두 정수 x와 y로 이루어져 있다. (두 값 모두 미터, -32768 ≤ x, y ≤ 32767) 송도는 직사각형 모양으로 생긴 도시이다. 두 좌표 사이의 거리는 x 좌표의 차이 + y 좌표의 차이 이다. (맨해튼 거리) 문제 정리 출발점에서 편의점을 들려서 도착점으로 가거나, 출발점에서 바로 도착점으로 간다. 접근 방법 출발점에서 도착점에 도달 가능한 경우가 무엇일까요? 딱 밑에 두 가지 경우입니다. 출발지에서 도착점까지 거리가 1000.. 2023. 12. 12.
1309번: 동물원(Kotlin, C++) 제한사항 1 ≤ N ≤ 100,000 첫째 줄에 사자를 배치하는 경우의 수를 9901로 나눈 나머지를 출력하여라. 문제 정리 사자는 자신의 주위(사방면)에 다른 사자가 있으면 안된다. 사자를 둘 수 있는 방법을 모두 구하시오. 접근 방법 DP라고는 생각했는데 제한 시간 내에 못 풀어서 다른 사람 답안 봤습니다. 핵심은 위에 사자가 있는 경우와 위에 왼쪽에 사자가 있는 경우 위에 오른쪽에 사자가 있는 경우를 생각해서 풉니다. case1) 현재 블록에 사자를 안 두는 경우 이 경우에는 위에 사자가 어디 있든 지 상관 없습니다. 따라서, 아래 세 가지 수의 합이 사자를 안 두는 경우입니다. 위에 사자가 없는 경우(dp[n-1][0]) 위에 왼쪽에 사자가 있는 경우(dp[n-1][1]) 위에 오른쪽에 사자가 있.. 2023. 12. 10.
70. Climbing Stairs 문제 출처 : https://leetcode.com/problems/climbing-stairs/description/ [문제 설명] 계단을 1걸음, 2걸음 오를 수 있을 때 n번째 계단까지 오를 수 있는 방법은? [접근 방법] 전형적인 dp 연습문제. n번째 계단에 올라가는 방법은 n-1번째 계단에서 1걸음 올라가기 + n-2번째 계단에서 2걸음 올라가기 점화식 : dp[n] = dp[n - 1] + dp[n - 2] 굳이 배열을 사용하지 않고 변수만 두고도 풀 수 있는 문제지만 n의 최대 크기가 45밖에 되지 않으므로 배열을 사용하여 풀었다. class Solution { public: int climbStairs(int n) { if (n 2023. 7. 25.