일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Tree
- Matrix
- SQL
- string
- java
- two pointers
- 코테
- Binary Tree
- bit manipulation
- 구현
- greedy
- geometry
- dynamic programming
- simulation
- array
- implement
- 코딩테스트
- Counting
- 자바
- Data Structure
- hash table
- database
- Math
- Method
- 파이썬
- Number Theory
- Binary Search
- sorting
- Stack
- Class
- Today
- Total
목록java (1063)
코린이의 소소한 공부노트
수많은 마라톤 선수들이 마라톤에 참여하였다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였다. 1. Input, Output, Example - 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 반환 2. Constraint 1) 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하 2) completion의 길이는 participant의 길이보다 1 작다. 3) 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있다. 4) 참가자 중에는 동명이인이 있을 수 있다. 3. Code 1) 첫 코드 import java.util.*; class Soluti..
두 정수 X, Y의 임의의 자리에서 공통으로 나타나는 정수 k(0 ≤ k ≤ 9)들을 이용하여 만들 수 있는 가장 큰 정수를 두 수의 짝꿍이라 한다(단, 공통으로 나타나는 정수 중 서로 짝지을 수 있는 숫자만 사용한다). X, Y의 짝꿍이 존재하지 않으면, 짝꿍은 -1이고, X, Y의 짝꿍이 0으로만 구성되어 있다면, 짝꿍은 0이다. 1. Input, Output, Example - X, Y의 짝꿍을 문자열로 반환 2. Constraint 1) 3 ≤ X, Y의 길이(자릿수) ≤ 3,000,000 2) X, Y는 0으로 시작하지 않는다. 3. Code 1) 첫 코드 class Solution { public String solution(String X, String Y) { int[] x = new in..
숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있다. 기사들은 무기점에서 무기를 구매하려고 한다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 한다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약기관에서 정한 공격력을 가지는 무기를 구매해야 합니다. 무기를 만들 때 무기의 공격력 1당 1kg의 철이 필요하기 때문에 무기점에서 무기를 모두 만들기 위해 필요한 철의 무게를 미리 계산하려 한다. 1. Input, Output, Example - 기사단원의 수를 나타내는 정수 number와 이웃나라와 협약으로 정해진 공격력의 제한수치를 나타내는 정수 limit와 제한수치를..
다트 게임의 점수 계산 로직은 아래와 같다. (1) 다트 게임은 총 3번의 기회로 구성된다. (2) 각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다. (3) 점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수^1 , 점수^2 , 점수^3 )으로 계산된다. (4) 옵션으로 스타상(*) , 아차상(#)이 존재하며 스타상(*) 당첨 시 해당 점수와 바로 전에 얻은 점수를 각 2배로 만든다. 아차상(#) 당첨 시 해당 점수는 마이너스된다. (5) 스타상(*)은 첫 번째 기회에서도 나올 수 있다. 이 경우 첫 번째 스타상(*)의 점수만 2배가 된다. (예제 4번 참고) (6) 스타상(*)의 효과는 다른 스타상(*..
1. Input, Output, Example - 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 반환 - 실패율 계산: 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 2. Constraint 1) 스테이지의 개수 N은 1 이상 500 이하의 자연수 2) stages의 길이는 1 이상 200,000 이하 3) stages에는 1 이상 N + 1 이하의 자연수가 담겨있다. 4) 각 자연수는 사용자가 현재 도전 중인 스테이지의 번호를 나타낸다. 단, N + 1 은 마지막 스테이지(N 번째 스테이지)까지 클리어..
1. Input, Output, Example - 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환 - 소수는 약수의 개수가 2개인 자연수를 뜻한다. 2. Constraint 1) n은 2이상 1,000,000이하의 자연수 3. Code import java.util.*; class Solution { public int solution(int n) { boolean[] prime = new boolean[n+1]; Arrays.fill(prime, true); for(int i=2 ; i
N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. (1) 만약 종이가 모두 같은 수로 되어 있다면 이 종이를 그대로 사용한다. (2) (1)이 아닌 경우에는 종이를 같은 크기의 종이 9개로 자르고, 각각의 잘린 종이에 대해서 (1)의 과정을 반복한다. 이와 같이 종이를 잘랐을 때, -1로만 채워진 종이의 개수, 0으로만 채워진 종이의 개수, 1로만 채워진 종이의 개수를 구해내는 프로그램을 작성하시오. 1. 입력 - 첫째 줄에 N(1 ≤ N ≤ 3^7, N은 3^k 꼴)이 주어진다. - 다음 N개의 줄에는 N개의 정수로 행렬이 주어진다. 2. 출력 - 첫째 줄에 -1로만 채워진 종..
흑백 영상을 압축하여 표현하는 데이터 구조로 쿼드 트리(Quad Tree)라는 방법이 있다. 흰 점을 나타내는 0과 검은 점을 나타내는 1로만 이루어진 영상(2차원 배열)에서 같은 숫자의 점들이 한 곳에 많이 몰려있으면, 쿼드 트리에서는 이를 압축하여 간단히 표현할 수 있다. 주어진 영상이 모두 0으로만 되어 있으면 압축 결과는 "0"이 되고, 모두 1로만 되어 있으면 압축 결과는 "1"이 된다. 만약 0과 1이 섞여 있으면 전체를 한 번에 나타내지를 못하고, 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래, 이렇게 4개의 영상으로 나누어 압축하게 되며, 이 4개의 영역을 압축한 결과를 차례대로 괄호 안에 묶어서 표현한다. 위 그림에서 왼쪽의 영상은 오른쪽의 배열과 같이 숫자로 주어지며, 이 영상을 쿼드..
한수는 크기가 2^N × 2^N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 크기가 2^(N-1) × 2^(N-1)로 4등분 한 후에 재귀적으로 순서대로 방문한다. N이 주어졌을 때, r행 c열을 몇 번째로 방문하는지 출력하는 프로그램을 작성하시오. 1. 입력 - 첫째 줄에 정수 N, r, c가 주어진다. - 1 ≤ N ≤ 15 - 0 ≤ r, c < 2^N 2. 출력 - r행 c열을 몇 번째로 방문했는지 출력한다. 3. 예제 4. 코드 1) 첫 코드 - 맞긴 하나 시간초과 import java.util.*; import java.io.*; class Main { st..
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. n을 d(n)의 생성자라고 한다. 위의 예시에서 75는 87의 생성자이다. 생성자가 없는 숫자를 셀프 넘버라고 한다. 100보다 작은 셀프 넘버는 총 13개가 있다. 1, 3, 5, 7, 9, 20, 31, 42, 53, 64, 75, 86, 97 10000보다 작거나 같은 셀프 넘버를 한 줄에 하나씩 출력하는 프로그램을 작성하시오. 1. 입력 - 입..