Super Kawaii Cute Cat Kaoani
본문 바로가기

{Algortihm}/Java17

[백준] 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.
[백준] 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.
[백준] 11724번 연결 요소의 개수 - JAVA ✍️풀이방식 1. 문제 분석 1. 노드의 개수가 1000개 2. N 제곱이면 1000000, 백만 정도면 3초안에 충분히 풀린다. 3. 양 끝 점 u ,v 같은 엣지는 한번만 주어짐 -> 방향성이 없다 따라서 양쪽 인접리스트로 구현해야한다. 4.트리 완전 탐색 문제 따라서 DFS로 접근해야한다. 2. 현재 출력에선 첫째 줄에 연결 요소의 개수를 출력한다고 되어있다. 이는 실제 그래프가 몇 개로 나눠지는 지 즉몇개의 연결 요소로 구성되는 지 묻고 있다 예제 입력 1번에선 다음과 같이 나누어진다. 그림으로도 확인할 수 있다. 예제 입력 2번도 1번과 같이 확인할 수 있다. ⭐따라서 DFS가 끝날 때까지 탐색한 모든 노드의 집합을 하나의 연결 요소로 판단할 수 있다. .. 2025. 9. 10.
[백준] 12819번 DNA 비밀번호 ✏️인프런 Do it! 알고리즘 코딩테스트 java 편을 듣고 푼 문제입니다.      ✍️풀이방식 슬라이딩 윈도우 알고리즘이란?2개의 포인터로 범위를 지정한 다음 범위를 유지한 채로 이동하며 문제를 해결한다 → 투 포인터 알고리즘과 비슷하고 원리도 간단 keypoint : 슬라이딩 윈도우 원리 이해 , 실제 문자열과 관련된 배열 처리    슈도 코드 작성//배열 저장 (s 배열 p 배열 저장 ) S(문자열 크기) P (부분 문자열의 크기) A( 문자열 데이터) CheckArr(비밀번호 체크 배열) //변수 선언 myArr(현재 상태 배열) cheackSecret(몇 개의 문자와 관련된 개수를 충족했는지 판단하는 변수) P 범위(0~p-1)만큼 s 배열에 적용하기 , 유효한 비밀번호인지 판단for(i를 .. 2024. 12. 29.
[백준] 2743 단어 길이 재기 - JAVA ✍️풀이방식 String의 length 메소드를 사용해서 길이를 반환했다String 관련 메소드 🌟문자 추출 charAt()문자열 비교 equals()바이트 배열로 변환 getBytes()문자열 찾기 indexOf()문자열 길이 length()문자열 대치 replace()문자열 잘라내기 substring()알파벳 소대문자 변경 toLowerCase(), toUpperCase()문자열 앞뒤 공백 잘라내기 trim()문자열 변환 valueOf()      🖥️문제풀이  import java.util.*;import java.io.*;public class Main{ public static void main(String[] args)throws IOException { BufferedRead.. 2024. 11. 23.
[백준] 9086 문자열 - JAVA ✍️풀이방식  처음에 간단하게 while문을 사용하려고 했으나 java에서는 c++이나 다른 언어처럼 whle문안에 저런 식으로 쓰는 것이 안된다고 한다. (Java에서는 C나 C++처럼 T--을 boolean 조건으로 사용할 수 없다 )while(T--){ int i=0; String str = br.readLine(); name[i]=str.substring(0,1)+ str.substring(str.length()-1, str.length()); i++; }  String의 메소드 중 하나인 substring 함수를 사용해서 접근하였다. 또한 while문도 for문으로 변경해주었다.for(int i=0;i   🖥️문제풀이 impo.. 2024. 11. 20.