[프로그래머스] Lv.2 n진수 게임 JAVA 풀이
문제 Lv.2 n진수 게임 : 여러사람이 둥글게 앉아 숫자를 차례대로 말하기 : 숫자 0부터 시작해서 순서대로 말하고 10 이상부터는 한자리씩의 숫자만 말하기 (예 10을 한명이 아닌 두명이 나눠서 말하는 것) : 이진수로 말하기도 가능 (0, 1, 1|0, 1|1, 1|0|0,,, 한자리수씩 끊어 읽기) : 입력: 진법 n, 구할 숫자 개수 t, 게임에 참가하는 인원 m, 튜브 순서 p 2 ≦ n ≦ 16 / 0 < t ≦ 1000 / 2 ≦ m ≦ 100 / 1 ≦ p ≦ m 1) 0 (= 0), 1 (= 1), 10 (= 2), 11 (= 3), 100 (= 4) 중 2명이 말하는데 그 중 첫번째 순서만 구해라 A: 0 → B: 1 → A: 1 - B: 0 → A: 1 - B: 1 → A: 1 - ..
2023. 11. 15.
[백준] 14888번 연산자 끼워넣기 JAVA (자바) 풀이
문제 14888번 : N개의 수열 (A1, ... , AN) 주어진다 수 사이에 끼워넣을 수 있는 N-1개의 연산자 (+ 덧셈, - 뺄셈, × 곱셈, ÷ 나눗셈) 주어진다 숫자 순서 바꿀 수 X, 연산자 순서 바꿀 수 O : 우선순위 무시하고 앞에서부터 계산 나눗셈은 몫만 구하고, 음수를 양수로 나눌 때에는 숫자끼리만 나누고 몫에 -만 붙여준다 (=음수처리) : 결과식 최대인 것과 최소인 것을 구해라 [입력] : 첫 줄에 수열 개수 N : 둘째 줄 N개의 수열 : 연산자 개수 ( +, -, ×, ÷ 순서 ) [출력] : 식 최댓값 첫째줄에, 식 최솟값 둘째줄에 출력 [알고리즘] 모든 경우를 분석해야 하는구나 = 완전 탐색 = 브루트 포스 연산자의 조합을 이용해야 한다 = 순열 순열을 쉽게 구하기 위해서는..
2023. 10. 29.
[백준] 2531번 회전 초밥 JAVA (자바) 풀이
문제 2531번 (투포인터, 슬라이딩 윈도우) : 초밥 벨트 임의의 위치부터 k개의 접시를 연속해서 식사 : 쿠폰에 쓰여진 초밥은 무료 시식 가능 : 손님이 먹을 수 있는 최대 초밥 가짓수를 구해라 [입력] : 첫 줄에 접시 수 N / 초밥 가짓 수 d / 연속해서 먹는 접시의 수 k / 쿠폰 번호 c 둘째 줄에는 수열 N개의 줄에는 각 줄 마다 초밥 종류가 하나씩 주어진다 [출력] : 먹을 수 있는 초밥의 최대 가짓 수 출력 [설명] (예시) k=4, 30번 초밥을 쿠폰 획득일 경우 - 가능한 모든 경우의 수 (7,9,7,30),(9,7,30,2),(7,30,2,7),(30,2,7,9),(2,7,9,25),(7,9,25,7),(9,25,7,9),(25,7,9,7) - 최대한 많은 종류를 먹어야해서 초밥..
2023. 10. 23.
[프로그래머스] Lv.1 크레인 인형뽑기 JAVA 풀이
문제 Lv.1 크레인 인형뽑기 : 게임화면 = N × N 격자 아래부터 차곡차곡 쌓여있음 크레인 위치를 좌우로 옮겨 가장 위에 있는 인형 집어올려 바구니에 넣는다 바구니에 같은 모양의 인형이 두 개 만나면 터져서 없어진다 (바구니는 모든 인형이 다 들어갈 수 있는 여유로운 크기이다) [예시문제] : 격자 = 2차원 배열 board, 크레인 위치 = moves : board = [0,0,0,0,0] [0,0,1,0,3] [0,2,5,0,1] [4,2,4,4,2] [3,5,1,3,1] : moves = [1,5,3,5,1,2,1,4] : result = 4 : 바구니 = [4,3,1,1,3,2,4] [코드] import java.util.*; class Solution { public int solution..
2023. 10. 2.
[백준] 11053번 가장 긴 증가하는 부분 수열 JAVA (자바) 풀이
문제 11053번 : 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우, 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 각 dp[] 의 길이들은 다음 부분 수열을 의미하는 것이다 출처 https://st-lab.tistory.com/137 dp[0] = 10 이제 나온 것 {10} 중에 가장 길다 = 1 dp[1] = 20 이제 나온 것 {10, 20} 중에 가장 길다 = 2 dp[2] = 10 이제 나온 것 {10, 20} 중에 10까지는 길이가 1밖에 안된다 dp[3] = 30 이제 나온 것 {10, 20, 30} 중에 가장 길다 = 3 dp[4] = 20 이..
2023. 9. 25.