Super Kawaii Cute Cat Kaoani
본문 바로가기

{Algortihm}33

[JAVA] 자바 코딩 테스트 문법 정리 코테 풀 때마다 계속 까먹어서 이번 기회에 정리하고자 합니다. 0. import 자바에서 기본적으로 많이 사용하는 패키지. 미리 선언해두고 들어가면 편합니다. import java.io.*; // 입출력 관련 (BufferedReader, InputStream 등)import java.util.*; // 컬렉션, Scanner, Arrays, List, Map, Set 등 1. String String str = "hello";// 길이str.length(); // 5// 특정 문자str.charAt(1); // 'e'// 부분 문자열str.substring(1, 4); // "ell"// 찾기str.indexOf("l"); .. 2025. 9. 25.
[알고리즘] 문자 및 숫자 알파벳 변환 정리 가끔씩 자바 코테 문제에서 알파벳에서 숫자를 빼고 숫자에서 알파벳을 빼는 로직이 있는데, 매번 헷갈려서 이번 기회에 정리해두고자 한다. 우선 이 로직을 이해하기 위해선 아스키 코드에 대한 이해가 필요하다. 1. 아스키 코드란? 아스키 코드(ASCII)는 문자를 숫자로 표현하기 위한 컴퓨터 표준 인코딩 방식이다. 즉 문자(Character)를 컴퓨터가 이해할 수 있도록 숫자 값으로 매핑한 표준이라고 생각하면 된다. 우리가 자주 사용하는 대문자 A 같은 경우는 65, 소문자 a 같은 경우는 97로 매핑된다. 또한 문자에서 0 같은 경우엔 숫자 48로 매핑된다. 이러한 이러한 문자 → 숫자 매핑 규칙 덕분에, 우리는 문자를 숫자처럼 연산할 수 있다. 2. 숫자 문자 ↔ 정수 변환 ⭐ 1. 숫.. 2025. 9. 25.
[백준] 10988번 팰린드롬 - JAVA ✍️풀이방식 문자열을 비교하는 방식 즉 charAt() 활용 문제이다. charAt()은 문자열(String)에서 특정 위치의 문자(char)를 꺼내는 메서드 문자 = 문자열.charAt(인덱스); import java.util.*;import java.io.*; public class Main { public static void main(String[] args) throws IOException { // 입력을 받기 위한 BufferedReader 생성 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String word = br.readLine(); // 문자.. 2025. 9. 23.
[백준] 2178번 미로 탐색하기 - JAVA ✍️풀이방식 1. 문제 분석 미로의 각 칸에 들어 있는 숫자 중 1은 이동할 수 있는 칸, 0은 이동할 수 없는 칸. 한 칸에서 다른 칸으로 이동할 때는 서로 인접한 칸으로만 이동할 수 있다. 이동한 칸을 셀 때는 시작 위치와 도착 위치를 포함한다. 즉 (1,1)에서 (4,6)으로 이동하려면 총 15칸을 지나가야한다. 2. 풀이 과정 현재 N,M의 범위가 2이상 100이하로 작기 때문에 시간 복잡도는 따로 고려하지 않아도 된다. 지나야하는 칸 수의 최솟값을 찾는 것은 완전 탐색을 진행하며 몇 번째 깊이에서 원하는 값을 찾을 수 있는지를 구하는 것과 동일. 따라서 BFS를 사용해 최초로 도달했을 때 깊이를 출력하면 문제를 해결할 수 있다. 🖥️문제풀이 방향 벡터 정.. 2025. 9. 16.
[알고리즘] BFS 너비 우선 탐색 ✏️해당 포스트는 인프런 알고리즘 코딩테스트 핵심이론 강의를 토대로 정리한 내용입니다. ⭐너비 우선 탐색 (BFS) 이란? 너비 우선 탐색도 그래프를 완전 탐색하는 방법 중 하나로 시작 노드에서 출발해 시작 노드를 기준으로 가까운 노드를 먼저 방문하면서 탐색하는 알고리즘이다. 그래프 완전 탐색이라는 점은 DFS와 같다. 특징은 FIFO 탐색(선입선출 방식)을 하며 Queue 자료구조를 이용한다. ⭐DFS와의 차이 더보기 DFS (깊이 우선 탐색)한 경로를 끝까지 파고들었다가 더 이상 못 가면 되돌아와서 다른 경로를 탐색즉, 깊게 → 깊게 → 끝까지 간 다음 백트래킹주로 스택(Stack) 구조(또는 재귀 호출)로 구현 미로에서 한 길을 끝까지 들어갔다가 막히면 뒤로 돌아와 다른 길 시도하는 .. 2025. 9. 16.
[백준] 17136번 색종이 붙이기 - JAVA ✍️풀이방식 1. 문제 분석 1이 있는 칸에만 색종이를 붙여야 하고 칸에 딱 맞게 붙여야 하는 것. 각 종류의 색종이를 5개씩 가지고 있기 때문에 한 종류 마다 5개까지 사용할 수 있다. 즉 전체 색종이 개수는 25개이다. 색종이를 붙일수 있는 경우의 수를 백트래킹 알고리즘을 이용하여 구하면 된다. 지금까지 연습했던 문제들 중에 가장 난이도가 높은 문제였던 것 같다... 2. 풀이 과정 1. 색종이를 붙일 수 있는 1번째 위치를 찾는다. 2. 탐색 위치는 왼쪽 위에서 시작하여 오른쪽으로 이동하고, 오른쪽 끝에 도달하면 한 줄 아래로내려가서 다시 왼쪽부터 이동하는 방식으로 진행한다. (가지치기를 극대화 하기 위해서 큰 색종이부터 탐색한다) 3. 현재 선택한 위치에 가지고 있는 색종이.. 2025. 9. 15.
[백준] 9663번 N-Queen 배치하기 - JAVA ✍️풀이방식 1. 문제 분석 N-queen은 전형적인 백트래킹으로 풀 수 있는 문제이다. 크기 N × N 체스판 위에 퀸 N개를 서로 공격하지 않게 놓는 문제. 체스에서 퀸은 가로, 세로, 대각선으로 움직일 수 있으므로 같은 행, 열, 대각선에는 퀸이 동시에 존재할 수 없음. 즉 같은 행에는 퀸이 1개만 존재할 수 있음. 모든 행에 퀸을 1개씩 배치해야 N개의 퀸이서로 공격하지 않도록 놓을 수 있다. 2. 풀이 과정 퀸을 한 행씩 배치하면서, 현재까지 놓은 퀸이 조건을 만족하지 않으면 즉시 가지치기(백트래킹) -> 탐색을 종료하고 이전 단계로 돌아간다. 마지막 행까지 퀸 배치 성공하면 경우의 수 +1, 백트래킹 전체를 종료하면 경우의 수를 출력한다. 맨 위 행부터 시작해 각 행마다 퀸을.. 2025. 9. 12.
[백준] 15649번 N과 M - JAVA ✍️풀이방식 1. 문제 분석 1부터 N까지 자수 중에서 중복 없이 M개를 고른 수열또한 수열은 사전 순으로 증가하는 순서, 즉 오름차순으로 정렬하여서 출력해야한다. 현재 수열에서 추가할 수 있는 자연수를 탐색, 자연수가 기존 수열에서 이미 사용한 수라면 해당 수를 선택한 탐색은 진행하지 않고 이전 단계로 돌아간다(가지지치기) 수열의 길이가 M이 될 때 수열의 정보를 출력한다 . 2. 풀이 과정 일단 작은 수 부터 탐색하도록 기준을 잡으면 오름차순 조건을 자연스럽게 만족할 수 있다. 가지치기 기준은 이미 수열에 포함한 수(중복 허용 x) 이전 단계로 돌아가는 로직은 재귀 함수 형태로 탐색하면 자연스럽게 구현된다. 🖥️문제풀이 import java.io.*;import java.util.*.. 2025. 9. 11.
[알고리즘] 백트래킹 (Backtracking) ✏️해당 포스트는 인프런 알고리즘 코딩테스트 핵심이론 강의를 토대로 정리한 내용입니다. ⭐백트래킹이란? 문제를 해결하는 탐색 기법을 말한다. 문제를 해결할 수 있는 모든 경로를 탐색하면서 선택한 경로가 유효하지 않거나 조건에 만족하는 해를 찾지 못할 경우, 이전 단계로 되돌아가 다른 경로를 시도하는 알고리즘 즉 다시 정리하자면, 해(정답)를 찾기 위해 모든 경우의 수를 탐색하되, 탐색 도중에 해가 될 수 없는 경우(불필요한 경로) 를 만나면 더 이상 진행하지 않고 되돌아가(backtrack) 다른 경로를 시도하는 탐색 기법. 구현 방식재귀 함수로 구현하는 경우가 많음. (DFS의 개념과 구현방식이 매우 유사, 다만 DFS는 모든 노드를 탐색하는 것을 목적으로 함) 가지치기(pruning)를 통해.. 2025. 9. 11.