분류 전체보기

알고리즘 문제 풀이

[Java] 프로그래머스 : 숫자 짝꿍

[Java] 프로그래머스 : 숫자 짝꿍 https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 주어진 두 수에서 공통으로 나타나는 정수 세 개를 찾아내고, 그 숫자들로 만들 수 있는 가장 큰 세자리 정수가 무엇인지 알아내야 한다. 짝이 없으면 -1을, 짝이 0으로만 구성되면 0을 출력해야 한다. 짝을 만들 때, 각각의 값을 기존 값에서 제외시키도록 해야 한다. 예를들어, X = 5525, Y = 1255면 X에는 5가 3개, Y에는 5가 2개이..

알고리즘 문제 풀이

[Java] 프로그래머스 : 로또의 최고 순위와 최저 순위

[Java] 프로그래머스 : 로또의 최고 순위와 최저 순위 https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 최대한 많이 맞히는 경우와 최대한 적게 맞히는 경우에 대해서 생각해 보았다. 최대한 많이 맞히려면, 0으로 들어온 값은 반드시 당첨 번호로 카운트를 해줘야 하며, 최대한 적게 맞히려면, 0으로 들어온 값은 반드시 틀린 번호이므로 카운트 하지 않아야 한다. 당첨 번호의 기준은 순서 상관 없이 번호만 일치하면 되기 때문에 해시맵을 사용해..

알고리즘 문제 풀이

[Java] 프로그래머스 : K번째 수

[Java] 프로그래머스 : K번째 수 https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 처음에 commands의 각 요소들이 두자리 수 이상의 정수가 온다는 것을 인지하지 못하고 String으로 변환하여 substring으로 잘라내다가 2, 6번 케이스에서 오류가 났었다. array가 [1, 5, 2, 6, 3, 7, 4]와 같은 경우, String으로 변환하면 1526374가 되고 필요한 부분을 잘라 각각을 정수로 다시 변환하여 k번째 ..

알고리즘 문제 풀이

[Java] 백준 2206 : 벽 부수고 이동하기

[Java] 백준 2206 : 벽 부수고 이동하기 https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 접근 일반적인 bfs 방문체크에서 벽을 부수는 것을 옵션으로 추가해야하는 문제이다. visted를 3차원 배열로 선언하여, x, y축과 벽을 부섰는지의 여부를 체크할 수 있도록 구현했다. 최초 방문체크를 할 때 벽을 아예 부수지 않는 탐색자와 벽을 한 번 부술 수 있는 탐색자로 나눈다. visited[x][y][0] = t..

알고리즘 문제 풀이

[Java] 백준 14226 : 이모티콘

[Java] 백준 14226 : 이모티콘 https://www.acmicpc.net/problem/14226 14226번: 이모티콘 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만 www.acmicpc.net 접근 1. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. 2. 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다. 3. 화면에 있는 이모티콘 중 하나를 삭제한다. 화면에 있는 이모티콘의 수를 x, 클립보드에 있는 이모티콘의 수를 y라고 가정한다. 복사 -> 클립보드 저장의 경우: [x, y] -> [x, x] 붙여넣기의 경우: [x, y] -..

JAVA/SpringBoot

[Springboot] 스프링부트 2.7 이상 QueryDsl build.gradle 설정

[Springboot] 스프링부트 2.7 이상 QueryDsl build.gradle 설정 필요한 부분만 작성했습니다. buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'war' id 'org.springframework.boot' version '2.7.13' id 'io.spring.dependency-management' version '1.0.15.RELEASE' id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' } group = 'org.zerock' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } c..

JAVA/SpringBoot

Failed to initialize JPA EntityManagerFactory: No identifier specified for entity 에러 해결법

Failed to initialize JPA EntityManagerFactory: No identifier specified for entity 에러 해결법 Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity 위와 같은 오류가 발생했을 경우, ..

알고리즘 문제 풀이

[Java] 백준 1987 : 알파벳

[Java] 백준 1987 : 알파벳 알파벳 적힌 칸을 한 번씩만 지나서 최대한 몇 칸을 움직일 수 있는가를 구현한다. DFS로 구현할 경우, 각각의 루트에 대해서 지나갈 수 있는 값들 중 최댓값을 출력할 수 있도록 해야한다. 특정 루트에 대한 탐색이 끝나면 다음 루트에 대한 탐색도 온전하게 진행되어야 하므로, dfs의 재귀가 끝날 때 해당 알파벳에 대한 방문 처리를 초기화 해주어야 한다. 방문 처리를 초기화 해주지 않으면 다음 루트에 대한 탐색에 문제가 생기기 때문이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; publ..

알고리즘 문제 풀이

[Java] 백준 2667 : 단지번호붙이기

[Java] 백준 2667 : 단지번호붙이기 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 입력해야하는 값이 아래와 같이 주어진다. 7 0110100 0110101 1110101 0000111 0100000 0111110 0111000 첫째줄은 지도의 크기 N이며, 그 다음 N줄에는 N개의 자료가 입력된다. 위의 정보를 토대로 NxN 크기의 map을 먼저 만들어야 한다. 각 행마다 하나의 문자열을 받는다고 가정하면, 0번 행에는 '0110100'이라는 문자열을 분리하여 각각의 행에 정수로 치환한 값을 할당해야..

알고리즘 스터디

05 : DFS, BFS

[Java 자료구조] DFS, BFS 1. DFS(Depth-First Search) 깊이 우선 탐색 스택을 사용 1. 탐색 시작 노드를 스택에 삽입하고 방문처리한다. 2. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문처리하고, 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다. 3. 모든 노드가 한번씩 방문되었으면 종료한다. 그래프의 노드 1을 시작 노드로 설정하여 DFS를 이용해 탐색 인접한 노드 중에서 방문하지 않은 노드가 여러 개 있으면 번호가 낮은 순서부터 처리한다. 방문 처리된 노드는 회색으로, 현재 처리중인 스택의 최상단 노드는 하늘색으로 표현한다. step1. 시작 노드 '1'을 스택에 삽입하고 방문 처리 step2. 스택의 최상단 ..

알고리즘 스터디

04: 우선순위 큐

우선순위 큐 Java에서 우선순위 대기열을 구현하려면 우선순위 대기열 데이터 구조의 내장 구현인 java.util.PriorityQueue 클래스를 사용할 수 있습니다. PriorityQueue 클래스는 Java Collections Framework의 일부이며 우선순위 큐의 힙 기반 구현을 제공합니다. import java.util.PriorityQueue; import java.util.Comparator; 우선 순위 대기열은 자연 순서(Comparable 인터페이스를 구현하는 경우) 또는 사용자 정의 비교기를 사용하여 요소를 정렬합니다. 사용자 지정 주문을 정의하려면 Comparator 구현을 만들어야 합니다. 우선 순위 대기열에 저장하려는 요소가 사용자 정의 클래스인 경우 해당 클래스에서 Comp..

알고리즘 스터디

03: 큐, 덱

04: 큐, 덱 https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는..

lazarus0320
'분류 전체보기' 카테고리의 글 목록 (3 Page)