728x90 분류 전체보기244 [백준] 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. [컴파일러] Programming Language Basics 보호되어 있는 글 입니다. 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. [Java] 맵, 리스트 개념 정리 List순서가 있는 데이터 집합중복 허용인덱스로 요소 접근 (list.get(0))대표 구현체:ArrayList (가장 많이 사용)LinkedList List list = new ArrayList();list.add("A");list.add("B");list.add("A"); // 중복 가능System.out.println(list.get(0)); // "A"System.out.println(list); // [A, B, A] Map키(key)-값(value) 쌍으로 데이터 저장키는 중복 불가, 값은 중복 허용키로 값에 접근 (map.get("key1"))대표 구현체:HashMap (가장 많이 사용)LinkedHashMap, TreeMap Map map = new HashMap();map.put.. 2025. 9. 10. [SpringBoot] 스프링 컨테이너와 스프링 빈 🖊️ 본 포스트는 인프런 김영한 스프링 기본편을 보고 정리한 내용입니다. 스프링 핵심 원리 - 기본편| 김영한 - 인프런 강의현재 평점 5.0점 수강생 48,207명인 강의를 만나보세요. 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 스프링 기본 기능, 스프www.inflearn.com 스프링 컨테이너 생성 //스프링 컨테이너 생성ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 스프링 컨테이너라고 하며 인터페이스다.스프링 컨테이너는 xml을 기반으로 만들 수 있.. 2025. 9. 10. [Google 문서]구글 문서에 코드 블럭 사용하기 수업 중에 구글 문서를 사용할 때가 있어서 그때마다 코드를 입력할 일이 많았습니다. 그래서 코드 입력 기능이 있을까 찾아보던 중에 코드 블럭 부가기능 설치하는 법을 발견했습니다. 1. Code Blocks 설치하기 1) 상단 메뉴에서 [확장 프로그램] > [ 부가 기능] > [부가 기능 설치하기] 순으로 선택합니다. 2) 그러면 부가 기능을 설치할 수 있는 마켓 플레이스로 이동합니다. 3) 그 후 Code Block를 검색한 후에 설치해줍니다. 2. Code Blocks 사용법 문서에서 코드 붙여넣기복사한 코드를 그대로 구글 문서에 붙여 넣습니다.부가 기능 실행상단 메뉴 → 확장 프로그램 → Code Blocks → Start 를 누르면 오른쪽 사이드바가 열립니다.언어와 테마 선택.. 2025. 9. 9. 이전 1 ··· 4 5 6 7 8 9 10 ··· 28 다음 728x90