전체 글 188

[Algorithm] 무지의 먹방 라이브

풀이 1) 전제 조건 K 시간이 다 가기 전에 음식을 다 먹으면 -1을 반환한다. food_times에 담긴 합이 K보다 작거나 같으면 -1을 반환한다. 2) 가장 적은 시간이 드는 음식 다 먹는 시간 현재까지 음식을 먹는데 걸린 시간 sum, 이전에 먹은 음식에 걸린 시간 pre 남은 음식 rest로 만들어진 식 sum + (pq.peek().getTime() - pre) * rest 은 이제 먹을 음식 pq.peek()을 먹는데 걸리는 시간에 pre를 빼는 것은 pre가 이미 sum에 합쳐져 있기 때문이다. rest를 곱하는 이유는 pq.peek()을 먹으면 그만큼 다른 음식들도 먹어야 하기 때문이다. 위와 같은 식이 K보다 작을 경우 지금 먹는 음식을 모두 먹을 수 있다. sum = 0; pre =..

Algorithm 2021.06.03

[Algorithm] 럭키 스트레이트

문제 게임의 아웃복서 캐릭터는 필살기인 '럭키 스트레이트' 기술이 있다. 이 기술은 강력한 대신 게임 내에서 점수가 특정 조건을 만족할 때만 사용할 수 있다. 특정 조건이란 현재 캐릭터의 점수를 N이라고 할 때 자릿수를 기준으로 점수 N을 반으로 나눠 왼쪽 부분의 각 자릿수의 합과 오른쪽 부분 각 자릿수의 합을 더한 값이 동일한 상황을 의미한다. 123,402점이라면 왼쪽은 1+2+3=6, 오른쪽은 4+0+2=6으로 럭키 스트레이트를 사용할 수 있다. 입력 조건 첫째줄에 점수 N이 주어진다. (N의 자릿수는 항상 짝수의 형태로 주어진다.) 출력 조건 첫째 줄에 럭키 스트레이트가 가능하면 "LUCKY" 불가능하면 "READY"라고 출력한다. 풀이 String 타입으로 점수를 입력받아, 문자열의 길이의 절반..

Algorithm 2021.06.03

[JAVA] JAVA에서 순열 (Permutation)

참고 사이트 순열 Permutation (Java) 순열 연습 문제 순열이란 n 개의 값 중에서 r 개의 숫자를 모든 순서대로 뽑는 경우를 말합니다. 예를 들어 [1, 2, 3] 이라는 3 개의 배열에서 2 개의 숫자를 뽑는 경우는 [1, 2] [1, 3] [2, 1] [2, 3] [3, bcp0109.tistory.com 순열 n개의 원소 중에서 r개를 순서대로 뽑는 경우의 수 Swap을 이용한 순열 배열의 첫번째 값부터 순서대로 하나씩 바꾸며 모든 값을 한번씩 swap한다. depth 기준 인덱스로 이보다 인덱스가 작으면 고정, 큰 값들만으로 swap 순열의 순서가 보장되지 않는다. import java.util.*; public class Main { // r은 몇개 꺼낼지 public static..

Java 2021.06.02

[Algorithm] 볼링공 고르기

문제 A, B 두 사람이 볼링을 치고 있다. 두 사람은 서로 무게가 다른 볼링공을 고르려고 한다. 볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고, 공의 번호는 1번부터 순서대로 부여된다. 또한 같은 무게의 공이 여러 개 있을 수 있지만, 서로 다른 공으로 간주한다. 볼링공의 무게는 1부터 M까지의 자연수로 존재한다. 예를 들어 N이 5이고 M이 3이며 각각의 무게가 차례대로 1, 3, 2, 3, 2일 때, 각 공의 번호가 차례대로 1번부터 5번까지 부여된다. 이 때, 두 사람이 고를 수 있는 볼링공 번호의 조합을 구하면 다음과 같다. (1번 2번), (1번 3번), (1번 4번) (1번 5번) (2번 3번) (2번 5번) (3번 4번) (4번 5번) 결과적으로 두 사람이 공을 고르는 경우의 ..

Algorithm 2021.06.02

[Spring-boot] H2 데이터베이스 연결하기

H2 DB H2 데이터베이스는 MySQL 기반으로 동작하며, 메모리 내 데이터베이스로 동작할 수 있다. 디스크에 저장할 수도 있다. 브라우저 기반의 콘솔까지 지원한다. build.gradle 설정 의존성 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' } application.properties 설정 spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.pa..

Java/Spring 2021.06.01

[JAVA] JAVA에서 조합 (Combination)

참고 자료 [Java] 조합 Combination 조합 조합이란 n 개의 숫자 중에서 r 개의 수를 순서 없이 뽑는 경우를 말한다. (위키백과 - 수학에서 조합은 서로 다른 n개의 원소 중에서 순서에 상관없이 r개를 선택하는 것이다. 그 경우의 minhamina.tistory.com 조합 n개의 원소 중에서 r개를 순서 없이 뽑는 경우의 수 ( nCr ) 하나의 원소를 선택할 경우의 수와 하나의 원소를 선택하지 않을 경우의 수의 합으로 나타낼 수 있다. 하나의 원소를 선택하는 경우 : n개의 원소 중에서 1개를 꼭 뽑는다고 생각하고 r-1개를 채우는 경우 하나의 원소를 선택하지 않을 경우 : n개의 원소 중에서 1개를 꼭 뽑지 않는다고 생각하고 r개를 채우는 경우 예를 들어 {1, 2, 3} 원소를 가진..

Java 2021.06.01

[Algorithm] 문자열 뒤집기

문제 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 이 문자열 S에 있는 모든 숫자를 전부 같게 만드려고 한다. S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로 0을 1로 만드는 것을 의미한다. 예시 0001100의 경우, 전체를 뒤집으면 1110011이 되고, 4번째와 5번째 숫자를 뒤집으면 1111111이 된다. 하지만 처음부터 4번째와 5번째 숫자를 뒤집으면 0000000으로 모두 같은 숫자로 만들 수 있다. 문자열 S가 주어졌을 때, 다솜이가 해야 하는 행동의 최소 횟수를 출력하시오. 입력 조건 0과 1로 이루어진 문자열 S가 주어진다. 출력 조건 행동해야할 최소 횟수를 출력 풀이 먼저, 연속된 숫자를 한번에 뒤집는다고 생각하고, 0을 뒤집는 횟수 ..

Algorithm 2021.06.01

[Algorithm] 곱하기 혹은 더하기

문제 각 자리가 숫자로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 곱하기 혹은 더하기 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. 곱하기가 더하기의 우선권을 갖지 않고 무조건 왼쪽부터 연산이 진행된다. 입력 조건 첫째줄에 여러개의 숫자로 구성된 하나의 문자열 S 출력 조건 만들어질 수 있는 가장 큰 수 풀이 곱하기 연산과 더하기 연산의 결과가 더 큰 것을 가지고 가도록 생각했음. 왼쪽부터 계산하기 때문에 0번째부터 이웃한 숫자와의 더하기 연산과 곱하기 연산을 비교해 더 큰 경우를 저장해가면서 풀이했음. 그리고 배열의 마지막 인덱스에 저장된 값이 최대 값으로 판단함. import java.util.*; cla..

Algorithm 2021.05.31

[Java Spring] 프로젝트 생성 후 테스트 코드

테스트 주도 개발은 아니여도 단위 테스트는 작성하는 것이 좋다. Testing the Web Layer this guide is designed to get you productive as quickly as possible and using the latest Spring project releases and techniques as recommended by the Spring team spring.io 간단한 index 페이지를 불러오는 Controller 작성 후 테스트 코드 1. 웹 애플리케이션이 동작하는지 확인하는 테스트 package kr.scene.board; import kr.scene.board.controller.BoardController; import org.junit.jupite..

Java/Spring 2021.05.30
반응형