Super Kawaii Cute Cat Kaoani
본문 바로가기

분류 전체보기223

[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.
[컴파일러] 3주차 Grammar Basic 보호되어 있는 글 입니다. 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.