99클럽 코테 스터디 42일차 TIL
·
알고리즘 공부
코딩 테스트 공부  문제 풀이문제 설명이 문제는 주어진 초기 알고력(alp)과 코딩력(cop)을 활용하여, 다양한 문제들을 풀면서 목표 알고력과 코딩력을 달성하는 데 필요한 최소 시간을 계산하는 문제입니다. 각 문제는 알고력과 코딩력의 요구 조건이 있으며, 이를 만족해야만 해당 문제를 풀 수 있습니다. 문제를 풀면 알고력과 코딩력이 증가하며, 이 과정을 통해 목표치에 도달하는 것이 목표입니다.풀이 접근 방식이 문제는 동적 프로그래밍(Dynamic Programming, DP)을 사용하여 해결할 수 있습니다. 동적 프로그래밍을 통해 초기 상태에서 목표 상태로의 최단 경로를 찾아가며, 최소 시간을 계산합니다. 이 과정에서 주어진 문제를 풀어가며 알고력과 코딩력을 증가시키고, 이를 통해 목표치에 도달하는 방식..
99클럽 코테 스터디 41일차 TIL
·
알고리즘 공부
문제: 도둑질 (프로그래머스)이 문제는 원형으로 연결된 집들이 있는 마을에서 도둑이 훔칠 수 있는 최대 돈의 액수를 구하는 문제입니다. 집들이 원형으로 연결되어 있기 때문에 첫 번째 집과 마지막 집이 서로 이웃이라는 제약 조건이 있습니다. 도둑은 이웃한 두 집을 연속해서 털 수 없으므로, 이 제약을 고려하여 최대로 훔칠 수 있는 돈의 액수를 계산해야 합니다.나의 풀이이 문제는 동적 프로그래밍(Dynamic Programming)을 활용하여 해결할 수 있습니다. 기본적으로 두 가지 경우로 나눠서 생각할 수 있습니다:첫 번째 집을 털고 마지막 집을 털지 않는 경우첫 번째 집을 털지 않고 마지막 집을 터는 경우각 경우에 대해 최대로 훔칠 수 있는 돈의 액수를 계산한 후, 이 두 값 중 큰 값을 반환하면 됩니다..
99클럽 코테 스터디 40일차 TIL
·
알고리즘 공부
문제: 학교 가는 길프로그래머스의 "학교 가는 길" 문제는 학생이 집에서 학교로 가는 경로의 수를 구하는 문제입니다. 학교로 가는 길에는 m x n 크기의 격자가 주어지며, 격자 중 일부는 웅덩이로 막혀 있습니다. 학생은 오른쪽 또는 아래쪽으로만 이동할 수 있으며, 웅덩이를 피해 학교에 도착하는 경로의 수를 구하는 것이 목표입니다.나의 풀이이 문제는 동적 프로그래밍(Dynamic Programming)을 활용하여 해결할 수 있습니다. 동적 프로그래밍을 사용하면, 이전까지의 경로를 이용해 현재 위치에서의 경로 수를 효율적으로 계산할 수 있습니다. 이를 위해 dp 배열을 사용하여 각 격자점에서의 경로 수를 저장하고, 웅덩이를 고려하여 경로를 계산합니다.아래는 이 문제를 해결한 코드입니다:class Solut..
99클럽 코테 스터디 39일차 TIL
·
알고리즘 공부
로또 순위 계산 문제 풀이문제 설명이 문제는 로또 번호를 맞추는 게임에서 주어진 로또 번호와 당첨 번호를 비교하여 가능한 최고 순위와 최저 순위를 구하는 문제입니다. 로또 번호는 총 6개로 구성되며, 일부 번호는 0으로 표시되어 있어, 이 번호는 어떤 숫자와도 매칭될 수 있습니다. 이 문제는 이러한 로또 번호와 당첨 번호를 비교하여, 당첨될 수 있는 최고 순위와 최저 순위를 계산하는 것입니다.나의 풀이아래 코드는 주어진 로또 번호(lottos)와 당첨 번호(win_nums)를 비교하여 가능한 최고 순위와 최저 순위를 계산하는 자바 프로그램입니다.class Solution { public int[] solution(int[] lottos, int[] win_nums) { int resul..
99클럽 코테 스터디 38일차 TIL
·
알고리즘 공부
import java.util.*;class Solution { public int solution(int[] cards) { int n = cards.length; boolean[] visited = new boolean[n]; List groups = new ArrayList(); for (int i = 0; i
99클럽 코테 스터디 37일차 TIL
·
알고리즘 공부
2048 게임 시뮬레이션 문제 풀이문제 설명이 문제는 유명한 2048 게임을 시뮬레이션하여 최대 블록의 값을 찾는 문제입니다. 2048 게임에서는 상하좌우 방향으로 블록을 밀어 합칠 수 있으며, 각 방향으로 이동할 때마다 같은 숫자가 겹치면 두 수가 합쳐집니다. 이 과정에서 최대 5번의 이동을 시뮬레이션하여 최종적으로 얻을 수 있는 가장 큰 블록의 값을 출력해야 합니다.나의 풀이아래 코드는 2048 게임을 시뮬레이션하기 위한 자바 프로그램입니다. Board 클래스는 게임판을 나타내며, 상하좌우 이동 기능과 최대 블록을 계산하는 기능을 가지고 있습니다. Main 클래스에서는 DFS를 사용하여 최대 5번의 이동을 시뮬레이션하며, 그 결과를 출력합니다.import java.util.*;import java.i..
99클럽 코테 스터디 36일차 TIL
·
알고리즘 공부
오늘의 학습 키워드백트래킹 (Backtracking)사이클 탐지 (Cycle Detection)최적화 문제 (Optimization Problem)문제 이해이 문제는 N x N 크기의 맵에서 각 행과 열에서 하나의 원소를 선택하여 최대 점수와 최소 점수를 구하는 문제입니다. 각 원소는 숫자 또는 알파벳으로 주어지며, 숫자는 그대로 곱해지고, 알파벳은 음수 값으로 변환되어 점수에 곱해집니다. 또한, 선택된 원소들로 사이클을 형성하는 경우, 점수가 음수로 변환됩니다.나의 풀이package org.example.B_1552;import java.io.BufferedReader;import java.util.ArrayList;import java.util.List;public class Main { sta..
99클럽 코테 스터디 35일차 TIL
·
카테고리 없음
import java.util.*;class Solution { public int solution(int[][] game_board, int[][] table) { int n = game_board.length; boolean[][] visited = new boolean[n][n]; List pieces = new ArrayList(); // 테이블에서 퍼즐 조각 찾기 for (int i = 0; i cells = new ArrayList(); Stack stack = new Stack(); stack.push(new int[]{x, y}); visited[x][y] = true; ..
99클럽 코테 스터디 34일차 TIL
·
알고리즘 공부
나의 풀이import java.util.*;class Solution { public String[] solution(String[][] tickets) { // 그래프를 인접 리스트 형태로 생성 Map> graph = new HashMap(); for (String[] ticket : tickets) { graph.putIfAbsent(ticket[0], new ArrayList()); graph.get(ticket[0]).add(ticket[1]); } // 각 목적지 리스트를 역순으로 정렬 (사전순 방문을 위해) for (List destinations : graph.values(..
99클럽 코테 스터디 33일차 TIL
·
알고리즘 공부
오늘의 학습 키워드BFS (Breadth-First Search)문자열 변환 (String Transformation)그래프 탐색나의 풀이import java.util.*;class Solution { public int solution(String begin, String target, String[] words) { if (!Arrays.asList(words).contains(target)) { return 0; } Queue queue = new LinkedList(); queue.add(new WordNode(begin, 0)); while (!queue.isEmpty()) { WordNo..