본문 바로가기
  • 개발하는 곰돌이

분류 전체보기204

[IntelliJ] Kotlin 기반의 Spring Boot 프로젝트 생성 목차 Spring Boot 프로젝트 생성 IntelliJ Ultimate 버전에서는 Spring Initializr를 통해 손쉽게 SpringBoot 프로젝트를 생성할 수 있다. IntelliJ를 통하지 않고 Spring에서 직접 운영하는 SpringBoot 생성 사이트가 있다. 하지만 기본적으로 IntelliJ에서 생성하는 SpringBoot 프로젝트가 해당 사이트를 통해 프로젝트를 생성하는 것이기 때문에 두 방법 사이의 큰 차이는 없다. IntelliJ를 통한 Spring Boot 프로젝트 생성 상단 메뉴의 File → New → Project를 선택한 후 좌측에서 Spring Initializr를 선택하면 아래와 같은 창이 나온다. Name : 프로젝트의 이름을 입력 Location : 프로젝트의 .. 2022. 11. 30.
[Kotlin] 백준 1966 : 프린터 큐 문제 링크 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 문제 해설 큐(Queue)를 이용하면 쉽게 풀 수 있다. 우선 문서가 인쇄 대기열에 등록된 순서와 중요도를 묶은 배열을 모두 큐에 삽입한다. 그 후 M번째 문서가 인쇄될 때까지 아래 과정을 반복해서 수행한다.(코드의 14~25번째 줄) 현재 인쇄 대기열의 0번째 문서의 중요도가 가장 높은지 확인한다. 가장 높을 경우 해당 문서를 인쇄하고 원래 순서가 M이면 반복문을 종료한다. 가장 높은 경우가 아니면 해당 문서를 빼서 다시 큐의 맨 뒤에 삽입한다. 이 과.. 2022. 11. 30.
[Kotlin] 백준 9020 : 골드바흐의 추측 문제 링크 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net 문제 해설 10,000 이하의 짝수 \(n\)이 주어졌을 때, \(n\)을 차이가 가장 작은 두 소수의 합으로 나타내야 한다. 기본적으로는 4948번 문제와 접근 방법이 비슷하다. 모든 테스트 케이스 중 가장 큰 \(n\) 이하의 모든 소수를 탐색한 후 각 테스트 케이스에 대해 주어진 문제의 계산을 수행하면 된다. 문제에 \(n\)의 골드바흐 파티션을 구하면서 두 소수의 차이가 가장 작은 경우를 출력하라는 조건이 걸려있다. 어떤 짝.. 2022. 11. 29.
[Kotlin] 백준 4948 : 베르트랑 공준 문제 링크 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 문제 해설 어떤 자연수 \(n\)이 주어졌을 때 \(n\) 초과, \(2n\) 이하인 소수의 개수를 구해야하는 문제다. 어떤 수 \(x\) 이하의 모든 소수를 구하는 방법은 에라토스테네스의 체를 이용하는 방법이 있다. 이 문제도 에라토스테네스의 체를 이용하면 손쉽게 해결할 수 있다. 문제의 조건에 따르면 \(n\)의 최대값은 123,456이고, \(2n\) 이하인 소수의 개수를 구해야하므로 최악의 경우에는 246,912 이하인 소수를 구해야 한.. 2022. 11. 29.
[Java] 프로그래머스 : 주식가격 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 해설 문제 분류가 스택/큐라고는 하지만 배열만 이용해도 충분히 풀 수 있는 문제다. 문제의 조건에 따라 prices의 각 요소마다 그 이후의 요소들과 비교하여 값이 작아지는 경우가 있는지 확인하고, 값이 작아지는 경우가 있다면 값이 작아진 인덱스 까지의 거리를 구한 후 다음 요소로 넘어간다. Code class Solution { public int[] solution(int[] prices) { int[] answer = new int[prices.length]; for (int i = 0;.. 2022. 11. 29.
[Kotlin/Java] 소수 찾기와 에라토스테네스의 체 소수를 판별하는 기본적인 방법 소수(prime number, 素數)는 1과 자기 자신만으로 나누어 떨어지는 1보다 큰 자연수를 의미한다. 예를 들면 2, 3, 5, 7 ... 등이 있다. 어떤 수 \(x\)가 주어졌을 때 \(x\)가 소수인지 판별하는 가장 간단한 방법은 2부터 \(x-1\)까지 모든 수로 \(x\)를 나누었을 때 나누어 떨어지는 수가 있는지 확인하는 것이다. // Kotlin fun isPrime(x: Int): Boolean { for (i in 2 until x) {// 2부터 x-1까지 반복 if (x % i == 0) return false// x가 한 번이라도 나누어 떨어지면 소수가 아님 } return true// 모두 반복해도 나누어 떨어지지 않으면 소수 } // Java .. 2022. 11. 29.
[Kotlin] 백준 2839 : 설탕 배달 문제 링크 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제 해설 탐욕법으로 풀 수 있는 간단한 수학 문제다. 처음 N kg이 주어지면 먼저 5로 나눈 값을 옮겨야 할 봉지 수에 더하고 나머지를 남겨 놓는다. 여기서 나머지가 0이면 그 값이 즉시 정답이 된다. 나머지가 0이 아니라면 반복문으로 포장하지 않은 설탕(=나머지)의 양이 3으로 나누어 떨어질 때까지 계산을 시작한다. 포장하지 않은 설탕이 3으로 나누어 떨어진다면 나눈 값을 옮겨야 할 봉지 수에 더하고 반복문을 종료한다. 나머지가 3으로 나누어 떨어지지 않는.. 2022. 11. 28.
[Kotlin] 백준 11292 : 키 큰 사람 문제 링크 11292번: 키 큰 사람 민우는 학창시절 승부욕이 강해서 달리기를 할 때에도 누가 가장 빠른지를 중요하게 생각하고, 시험을 볼 때에도 누가 가장 성적이 높은지를 중요하게 생각한다. 이번에 반에서 키를 측정하였 www.acmicpc.net 문제 해설 가장 키가 큰 사람들의 이름을 입력된 순서대로 출력하기만 하면 되는 문제다. 알고리즘 분류 상으로는 정렬으로 분류되어 있지만 정렬을 할 필요는 없다. 학생의 이름과 키가 입력될 때마다 리스트에 해당 학생을 저장함과 동시에 현재 가장 큰 키와 비교하여 키의 최대값을 갱신한다. 모든 학생을 입력 받았으면 리스트에서 키의 최대값과 일치하는 키를 가진 학생들을 차례대로 출력하면 된다. Kotlin에서는 컬렉션 객체에 filter 함수를 사용하여 해당 조건.. 2022. 11. 28.