문제 자체를 이해하는데 시간을 꽤 오래 걸려서 포스트를 하려한다!문제를 이해하기 위해 예시를 들어 정리하였다!바구니의 수 (N = 8개) 회전수 (M = 4회)시작 바구니 (i = 1)끝 바구니 (j = 6)기준 바구니 (k = 4)시작 바구니와 끝바구니 사이의 순서를
그룹 단어란? 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우!결론, 1316번 그룹 단어 체커문제는 소문자로만 이루어진 문자가 그룹문자 형식을 통과하면 통과한 최종 그룹 문자의 개수를 출력하면 되는 문제이다.위의 코드까지 어찌저찌 생각했는데
이문제를 포스트하고자 한 것은 내 코드가 틀렸기 때문이다.일단 이 문제를 정리 해보자면, 사실 정리라고 할 것도 없이 쉽게 이해할 수 있는 문제이다.행이 9이고, 열이 9인 격자판(행렬)에 있는 모든 값들 중 가장 큰 값과 그 큰 값의 인덱스 (행, 열)값을 출력하면
2564번 문제 : 색종이 이번에 포스트할 문제는 2564번 문제인 색종이 문제이다. 처음 이 문제를 마주했을 때 여태까지는 한번 읽으면 어느정도 이해할 수 있었는데... 이 문제는 꽤 많이 읽었던 것 같다. 그래서 포스트를 하기로 결심하게 되었다. 문제 해석
오늘 포스트할 문제는 9506번 - 약수들의 합 문제 이다.이 문제는 두가지의 경우의 수로 나눌 수 있다. 자연수를 입력받는다. (여기서 자연수는 입력받는 수로 n을 의미한다)1) 자기자신(n)을 제외한 모든 약수(n을 어떠한 수로 나눴을 때 나머지가 0인 값)의 합이
11653번 문제는 소인수분해 문제로, 중학교 교과 과정에 본 적이 있는 문제이다.간단히 설명하자면, 정수(N)를 입력받아 소수(1을 제외한 자기 자신만으로 나누어지는 정수를 의미함)로 나눠서 0이 나오는 모든 수를 구하는 수 이다. 그렇게 1인 수가 나올때까지 소인수
"이 문제는 어려운 문제는 아니지만, 문제를 제대로 안읽고 (x, y)에서 (w, h)까지의 거리를 구하는 문제인줄 알고 처음에 당황했기 때문에 앞으로는 문제를 잘 읽자는 의미로 포스트를 하게 되었다."처음에 이해한 것은 왼쪽과 같아서, 예제 답이 맞지 않아 다시
오늘 포스트할 문제는 3009번 네번째 점이라는 문제이다.어려운 문제는 아니지만, 하루에 한 포스트를 목표를 하고 있어서 이 문제를 포스트를 하려고 한다.콘솔로 부터 직사각형의 세 좌표(x, y)를 입력받는다.직사각형은 점이 4개이니까, 세 좌표(=점)을 받은 것을 토
문제 자체는 읽고 바로 이해할 수 있을 정도로 쉽게 읽히는 문제이다.간단하게 문제를 정리하자면, 점(=옥구슬)의 개수(n)개를 입력받아 n개 만큼 점의 좌표를 입력받는다.입력받은 후에 각각의 점들을 기준 잡아, 점이 둘러싼 면적을 구하면 되는 문제이다.나는 간단하게 생
삼각형의 각을 모두 입력받는다. \- 만약, 입력받은 3개의 각이 모두 60이면, Equilateral을 출력만약, 세각의 합이 180이고 입력받은 3개의 각 중 2개의 각이 같을 경우, Isosceles을 출력만약, 세각의 합이 180이고 입력받은 3개의 각 중 같
이번 문제는 어제 포스트한 10101번\_삼각형외우기(JAVA)의 연장선이라고 하면 연장선일 수 있는 문제이다.한마디로 설명하자면 삼각형의 세변의 길이를 입력받아 변의 길이를 통해 어떤 삼각형인지 출력하면 되는 문제이다.콘솔에 0 0 0을 입력받기 전까지는 계속 반복문
오늘 포스트할 문제는 2745 진법 변환 문제이다. 개인적으로 조금 어려웠다... > ### 문제 해석 콘솔로 부터 값(N)을 입력 받고, 입력받은 값이 몇진법(B)인지도 같이 입력받는다. 그리고 B진법의 값(N)의 값을 10진법으로 바꿔 출력한다. 문제가 요구
이 문제는 바로 전 포스트에 올렸던 2745번 문제의 반대 버전으로 보면 된다.전 포스트와 반대로 10진수의 값과 바꿀 진법(B)를 입력받고 B진법의 값으로 바꾸면 된다.예시로 10진수를 16진수로 바꾸는 방법이다.이런식으로 코드를 작성하면 된다는 의미!public c
문제가 요구하는 바는 간단하다. 입력받은(N) 번 반복하여 N번째의 점이 몇개인지 출력하면 되는 문제이다.점을 찍는 로직(?)은 점과 점이 이어만든 변의 가운데에 점을 찍고 새로찍은 점들의 중심에 또 점을 찍는다. \- 즉, 한 사각형당 점이 5개 추가되는 셈이다.
문제가 요구하는 바는 이해를 했지만, 어떻게 구해야할지는 감은 안오고, 주어진 그림으로는 보기 어려서 색깔로 식별 가능하도록 만들었다.문제가 요구하는 바는 아래와 같다 1) 콘솔로부터 찾을 벌집의 방 번호(N)를 입력받는다. 2) 1번방에서 N번방을 가려하는데 최
문제 자체는 이해하기 쉬운 문제이지만, 구현이 좀 어렵다.(개인적으로)다음 배열(2차원 배열)에 아래처럼 적혀져 있다.이 나열된 분수들은 지그재그식으로 순회하는데, 어떤 식이냐면 1/1은 위쪽방향으로 순회하고, 그 다음 대각선인 1/2, 2/1은 1/2 -> 2/1 방
콘솔로 부터 A(낮에 올라갈 수 있는 미터), B(밤에 자는 동안 미끄러지는 미터), V(총 나무 막대 미터)를 입력받아서 달팽이가 며칠에 걸쳐 올라갈 수 있는지 계산하는 알고리즘이다.문제를 이해하는 것은 어렵지않았다.위의 풀이과정을 통해 아래와 같은 코드가 나왔다.p
문제 해석 10757번 문제는 어려운 문제는 아니지만 새로운 객체인 BigDecimal을 사용했기 때문에 정리하고자 포스트를 결심했다! 문제 자체는 두 수를 입력받아서 더한 값을 출력하면 되는 문제이다! >#### BigDecimal > ### 코드 >### 결
문제 해석 이 문제의 코드 어처구니 없이 심플 그 자체인데, 사실 문제를 이해하는 것이 어려웠다. 말이 어렵게 느껴지는 건 기분 탓일까...? 암튼 문제 해석을 해보자면, 콘솔로부터 입력 크기 n을 입력받아 해당 위의 알고리즘의 수행횟수와 알고리즘 수행 시간을 예제로
문제 해석 이 문제는 전 포스트의 연장선으로, 즉, 코드를 분석하면 되는 문제이다. 코드를 보면 입력받은 n을 받아 1부터 7까지 반복한다. => 1~7까지 반복하므로 총 7번 수행한다는 것을 알 수 있을 것이다. 그리고, 입력받은 n의 수만큼 반복 횟수가 늘어나므
문제 해석 전 포스트와 전전 포스트의 연장선으로 이번에도 수행 횟수와 수행 시간을 출력하는 문제이다. 위의 코드를 봐보자. for문 안에 for문이 있는 것을 확인할 수 있다. (i와 j) 이중 반복문인데, 이 반복문이 돌아가는 과정은 i가 1일때 j가 n만큼 반복
문제 해석 이번 포스트 또한 전 포스트의 연장선이 되는 문제이다. 주어진 코드는 위의 코드와 같은데, 사실 조금 불편하다. (그래서 익숙한 언어인 자바로 바꿔보았다. 수행 횟수를 출력하는 코드로) 해당 코드는 반복문이 한번 돌때마다 카운트를 해서 입력받은 숫자를
오늘 포스트할 문제 또한 거의 이번주 내내 포스트했던 알고리즘 수행 시간 1, 2, 3, 4를 이은 문제이다.주어진 알고리즘 코드를 분석하고 콘솔로부터 입력받은 n에 대한 수행 횟수를 첫번째 줄에 출력하고 두번째 줄에는 수행시간의 차수를 출력하면 된다.public cl
문제 해석 이번 포스트 또한 의 연장선인 내용이다. MenOfPassion 알고리즘을 JAVA 코드로 바꾸면 아래와 같다. 이 코드를 제출해도 정답이긴 하겠지만, 시간 단축을 위해 알고리즘 규칙을 찾아 코드를 작성할 예정이다.
O(g(n)) = {f(n) | 모든 n ≥ n0에 대하여 f(n) ≤ c × g(n)인 양의 상수 c와 n0가 존재한다}함수 f(n) = a1n + a0, 양의 정수 c, n0가 주어질 경우 O(n) 정의를 만족하는지 알아보자.첫째 줄에 함수 f(n)을 나타내는 정수
문제가 요구하는 바는 간단하다.콘솔로 부터 첫째줄에는 카드 개수(N)과 기준이 되는 수(M : 이 값을 기준으로 가까운 3개의 숫자를 입력받아아함)를 입력받는다.둘째 줄에서는 입력받은 카드의 개수만큼 수를 입력받아, M과 슈 3개를 더했을 때 M과 가장 가까운 수의
문제 해석 이문제를 이해하기 위해 꽤 많은 시간이 소요되었다..(문해력이 좀 부족한 듯 싶다.😂) 문제를 해석해보자면, 어떤 자연수(N)을 입력받아서 그 자연수를 만들 수 있는 어떤 자연수(M)을 찾으면 되는 문제이다. 만들어야하는 숫자(N)을 만들 수 있는 기준을
문제 풀이 문제는 간단한 연립방정식문제이다. a, b, c, d, e, f 순으로 입력받아, 해당 x와 y의 값이 무엇인지 찾으면 되는 문제이다. x와 y는 -999이상 999이하이므로 해당 범위만큼 반복하여 대입하여 풀면 된다. > ## 코드 > ## 결과
문제 자체는 이해하는데 어려움이 없는 문제이다.일단 체스판의 크기를 입력받고, 그 크기만큼 체스판의 색을 입력받는다. 체스판을 보면 위와 같이 검정(B)와 흰(W)로 칸이 번갈아가며, 체스판을 색칠한다.또한, 입력받은 체스판의 크기가 8X8이 아니면,8x8로 잘라줘야한
이 문제를 처음 보자마자 그냥 앞에 N-1하고 666을 붙여서 출력하면되는 거 아닌가? 하면서 쉽게 접근했지만 아니었다...일단 문제를 풀기 앞서 종말의 숫자 라는 것을 알아야하는데 종말의 숫자란 어떤 수에 6이 적어도 3개 이상 연속으로 들어가는 수를 말한다.정리하자
문제 자체는 간단하게, 봉지는 5KG 봉지와 3KG봉지가 주어지고, 입력받은 설탕의 킬로그램(N)을 어떻게하면 가장 적은 봉지로 담아 배달할 수 있을까?의 문제이다.import java.io.\*;public class Main {}
문제 해석 첫번 째 줄에는 수의 개수인 N을 입력받고, 두번째 줄부터는 N개의 개수만큼 숫자를 입력 받는다. 그 입력받은 숫자를 작은수 -> 큰수로 정렬하여 출력한다. 단, 중복된 숫자는 없다. > ## 코드1 코드에 대한 설명은 크게 없다. (주석으로 간단하게
문제 해석 첫번째부터 다섯번째 줄까지 숫자(자연수)를 입력받는다.(총 5개의 자연수) 입력받았다면, 해당 자연수들의 총 평균과 중간값을 찾아서 출력하면된다. (첫째 줄에 5개의 자연수의 평균, 두번째에 중간값 출력) > ## 코드 이 문제는 어려운 문제는 아니여서
문제 해석 첫번째 줄에는 응시자 수(N)와 상을 받는 사람의 수(k)사이에 공백을 두고 입력 받는다. 두번째 줄에는 해당 응시자 수(N)만큼 점수 사이에 공백을 두고 입력받는다. 그리고 커트라인(= 마지막으로 상을 받는 응시자의 점수가 몇점인지)를 출력하면 되는 문제
문제 해석 첫번째 줄에 입력받는 숫자의 개수(N)을 입력받고, 두번째 줄부터는 N개 만큼의 숫자를 줄별로 입력받는다. 입력받은 숫자들을 작은 수 -> 큰 수 로 정렬하여 출력하면 되는 문제이다. > ## 코드(틀린) 문제를 처음 봤을 때는 간단하다고 생각했고 그래
문제 해석 첫째 줄에 수의 개수(N)을 입력 받고, 그 N의 개수만큼 숫자를 입력받고, 그 숫자들이 중복이든, 중복이 아니든 작은수 -> 큰수로 정렬하면 되는 문제이다. 단 N은 10,000작거나 같다. => 최대 10,000개 까지 들어간다는 소리 > ## 코
연속된 숫자 문자열(N)을 입력받아 해당 N을 큰수 -> 작은수로 정렬하면 되는 문제이다.import java.io.\*;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;pu
문제 해석 이번 문제는 첫째줄에 입력받을 숫자의 쌍(x, y)의 개수(N)을 입력받는다. N개의 개수만큼 숫자의 쌍(x, y)을 한줄씩 입력받아. 숫자의 쌍에 x의 크기를 기준으로 작은 수 -> 큰 수로 정렬한다. > ## 코드 나는 숫자의 쌍이라는 말을 보자마자
문제 해석 이 문제는 전 11650번 좌표정렬하기POST와 거의 똑같은 문제이다. 전 POST에서는 x를 기준으로 정렬하였다면, 이번 POST 11651문제에선 y를 기준으로 작은수 -> 큰수 정렬하고, 만약 y값이 같다면 x를 비교하여 x가 작은 수 -> 큰 수가
문제 해석 이번 문제는 문자열을 정렬하는 문제이다. 첫번째 줄에 입력받을 단어의 개수(N)을 입력받고, 두번째 줄 부터는 소문자로 이루어진 단어를 한줄에 하나씩 입력받는다. 입력받은 단어들을 첫번째로는 길이가 짧은 것부터 정렬하고, 만약 길이가 같다면 사전(알파벳)순
문제 해석 첫째 줄에 온라인 저지 회원 수(N)을 입력받는다. 둘째 줄부터는 입력받은 N만큼 회원의 나이와 이름을 입력받는다. 입력받은 회원 정보를 나이순으로 정렬하되, 나이가 동일할 경우 먼저 등록한 순으로 출력한다. > ## 코드1 코드 부분은 크게 어려운 점
이 문제를 처음 마주했을 때 이게 무슨 소리이지 싶었다.예시를 보고 문제를 이해했는데, 예시를 보면 입력이 2 4 -10 4 -9일때, 출력은 2 3 0 3 1이다.이 예시를 통해 같은 값의 좌표가 있어도 그 값은 1개로 취급하는 것을 알 수 있다. (같은 값 4가 똑
문제 해석 문제는 간단하다 첫째 줄에는 상근이가 가지고 있는 숫자 카드의 수(N)을 입력하고, 둘째 줄에는 그 입력한 숫자 카드의 수(N)만큼 숫자카드를 입력받는다. 셋째 줄에는 상근이의 카드와 비교할 숫자 카드의 수 (M)을 입력받고, 네번째 줄부터는 (M)개 만큼
이 문제는 N개의 문자열과 M개의 문자열이 주어지는데, N은 집합 S의 개수이고, M은 비교할 대상의 문자열들이다. 쉽게 말하면, M개의 문자열이 주어지는데 집합 S의 문자열(개수 : N개)에 M개의 문자열이 몇개 속하는지 개수를 구하면 되는 것!예시를 들면 아래와 같
첫번째 줄에 출입 기록 수(N)을 입력받고, 출입 기록 수(N)만큼 출입 기록이 순서대로 주어진다.그 출입 기록은 출입한 사람이름과 enter(출근) or leave(퇴근)이 주어지는데, 현재 회사에 남아있는 사람을 출력하면 되는 문제이다. 다시 말해 퇴근하지 않은 모
Temp Body
먼저, 상근이가 가진 카드의 개수(N)를 입력받고, N개 만큼 숫자 카드를 입력받고, 그 다음에는 비교할 대상의 카드의 개수(M)개를 입력받고, 비교할 카드를 M개 만큼 입력받는다.입력을 다 받았다면, 상근이가 가진 카드목록에 비교할 대상의 카드들의 숫자들을 몇개씩 가
문제 해석 첫번째 줄에 듣도 못한 사람의 수(N)과 보도 못한 사람의 수(M)을 입력받는다. 처음에는 N번 듣도 못한 사람의 이름을 입력받는다. 그 다음줄부터는 M번 보도 못한 사람의 이름을 입력받는다. 다 입력 받았다면, 듣도보도못한 사람의 수와 듣도 보도 못한 사
이 문제는 두개의 집합(A, B)의 대칭 차집합을 구하면 되는 문제이다.A의 집합 요소에 1, 2, 4이 있다고 가정하고, B의 집합 요소에 2, 3, 4, 5, 6이 있다고 가정하면 두개의 공통된 교집합 요소는 2, 4이 된다. 즉 차집합이랑 각 집합의 요소에 교집합
문자열 S를 입력받아 문자열로 만들 수 있는 모든 부분문자열의 개수를 구하면 된다.예를 들면, ababc가 주어졌다는 가정하에 a, b, a, b, c, ab, ba, ab, bc, aba, bab, abc, abab, babc, ababc가 존재하는데, 같은 것을 제
문제 해석 첫번째 줄에는 입력받을 두 자연수(A, B)쌍의 개수(T)을 입력받아 두 자연수(A, B)의 쌍의 개수(T)만큼 입력받는 다. 두 자연수(A, B)쌍의 개수(T)개 만큼 입력받았다면 각각의 두 자연수(A, B)의 최소 공배수 각각 구하면 된다. 최소 공배수
두 자연수 A와 B를 입력받아서 최소공배수를 구하면 되는 문제이다.단, 50%의 입력 중 A와 B는 1000(10³)보다 작다. 다른 50%의 입력은 1000보다 크고 100000000(10⁸)보다 작기 때문에 최대 공배수를 구할 때 AxB/최대공약수 의 공식을 사용
두개의 분수를 입력받는데, 첫번째 줄에는 첫번째 분수의 분자(A)와 분모(B)를 입력받고, 두번째 줄에는 두번째 분수의 분자(A)와 분모(B)을 입력받는다.두개의 분수를 모두 입력 받았다면 두 분수의 합을 구하면 되는데, 합한 분수의 형태는 기약분수(분모와 분자의 공약
가로수의 개수(N)을 입력받고, 가로수의 개수만큼 가로수의 좌표(위치)값을 입력받는다. 현재 심어진 가로수의 좌표(위치)값을 모두 입력받았다면, 그 값들을 가지고 가로수와 가로수 사이의 간격이 모두 동일하도록 가로수를 추가하여, 최소로 추가할 수 있는 가로수의 개수를
문제는 간단하다. 일단 입력받을 정수의 개수(테스트 수 ; T)을 입력받아 정수를T개 만큼 입력받는다.입력을 모두 받았다면 입력받은 각각의 정수를 가지고 입력받은 정수보다 같거나 크면서 가장 작은 소수를 찾으면 되는 문제이다.public class Main { //입력
문제 해석 문제가 요구하는 바는 Simple 하다 > ## 코드 > ## 결과 > ## 느낀 점
0을 입력받을 때까지 임의의 자연수 N을 입력받아 N에 대하여 N보단 크고 2N보더 작거나 같은 소수의 개수를 구하면 되는 문제이다.단, N은 1보다 같거나 크고 123,456보다 같거나 작다.public class Main { static BufferedWrit
이 문제는 골드바흐의 추측을 기반으로 골드바흐의 파티션을 찾으면 되는 것이다.문제를 풀기 전 골드바흐의 파티션이 무엇인지 이해를 해야하는데, 처음 읽었을 땐 생소한 느낌이었지만, 읽어보면 간단하다.일단, 입력받을 2보다 큰 짝수의 개수(T)를 입력받고 T개 만큼 2보
문제를 처음 읽었을 때 이게 무슨 말인지 헷갈렸는데 이해한 토대로 정리하면 다음과 같다.일단, 정수인 N을 입력받는데 이 N은 사람 수이기도 하고, 창문의 개수이기도 하다.이런 식으로 진행했을 때, N명 만큼의 사람이 모두 창문에 대한 처리를 하였을 때, 마지막까지 열
N을 입력 받고 i번째 상의와 i번째 하위는 모두 같은 색상을 가지는데, N 개의 색상은 모두 다르다.상의와 하의의 색이 다른 조합은 총 몇가지인지 출력하면 되는 문제이다.이런 식으로, 조합을 찾으면 답은 6이 나오는 것을 볼 수 있다.public class Main
문제는 Simple하다.N을 입력받아 N!(N의 팩토리얼)을 출력받으면 된다.public class Main { public static void main(String\[] args) throws IOException { BufferedReader b
문제는 고등학교에서 배우는 조합론의 이항 계수를 구하는 문제이다.이항계수(Binomial Coefficient)는 조합론에서 등장하는 개념으로 주어진 크기 집합에서 원하는 개수만큼 순서없이 뽑는 조합의 가짓수를 말하는데, 쉽게 말하면 전체 집합에서 원소의 개수 n에 대
문제 해석 일단, 테스트 케이스의 개수(T)를 입력받고, 테스트 케이스의 개수만큼 N, M의 조합을 입력받는다. N은 서쪽의 사이트 개수이고, M은 동쪽의 사이트 개수이다. 서쪽과 동쪽일 잇는 다리를 만들려고 하는데 다리를 최대한 많이 지으려고 하기 때문에 서쪽의 사
첫번째 줄에 진짜 N의 약수 개수 A를 입력받고, 두번째 줄에는 진짜 약수들을 입력받는다.모두 입력받았으면 진짜 약수들을 기반으로 N을 찾으면 된다.public class Main {}
첫번째 줄에는 채팅방 기록 수 N을 입력받고, N개 만큼 채팅기록자의 닉네임을 입력받아 처음들어와서 곰곰이모티콘을 쓴 횟수를 출력하면 된다.단, ENTER후에 채팅기록자를 입력받는데 새로운 ENTER이 나오면 처음 ENTER에 들어온 채팅기록자일자라도 새로 들어온 사람
문제 해석 > ## 코드 > ## 결과 > ## 느낀 점
문제 자체는 간단하다. N개 만큼 숫자를 입력받는다. (단, N은 홀수이다.)모두 입력 받았다면, 아래의 순서대로 출력한다. 1\. 산술평균 : N개의 수들의 합을 N으로 나눈 값 2\. 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값
첫번째 줄에는 영어 지문에 나오는 단어의 개수 N과 외울 단어의 길이(각각의 단어의 길이) M을 입력받는다.모두 입력을 받았다면 영단어를 N개 만큼 입력받는다.입력받은 단어의 길이가 M이상이면서, 1\. 자주 나오는 단어일 수록 앞에 배치해당 단어의 길이가 길 수록
첫번째 줄에는 명령어의 수 N을 입력받고, 두번째 줄부터는 명령어를 한줄에 하나씩 주어진다.명령어는 아래와 같다. 1\. push X: 정수 X를 스택에 넣는 연산이다. 2\. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는
첫번째 줄에는 입력받을 테스트의 수 K을 입력받는다. K개 만큼 정수를 입력받는데 잘못된 수를 부를 때마다 0을 부르게 된다. 만약, 0을 부르면 가장 최근에 들어간 정수를 취소하면된다. (단, 취소할 정수가 하나도 없을 경우는 0을 추가하면 된다.)이 문제를 읽어보면
입력받은 테스트 수 T 만큼 괄호로 구성된 문자열을 입력받는다.그중 올바르 괄호 문자열(VPS)를 찾으면 되는 문제인데, 예를 들어 설명하면 아래와 같다.public class Main { static int size = 0; //현재 인덱스가 어디까지 찼는지 알
9012 ; 괄호 문제 POST의 연장선의 느낌이다.이 문제에서 입력받는 요소는 문자(알파벳), 공백, 소괄호("()"), 대괄호(" "), 온점(".") 가 있다. 1\. 대괄호, 소괄호는 여는 괄호와 닫는 괄호가 모두 1:1 매칭이 되어야 한다. 2\. 온점의
첫째 줄에는 입력받을 숫자의 개수(N)을 입력받고, N개 만큼 숫자를 입력받는데, 오름차순으로 입력받으면 해당 숫자만큼 요소를 차례대로 추가하고(이미 추가된 숫자(pop이 된 숫자)일 경우는 생략), 해당 숫자를 뺀다(pop). 내림차순일 경우는 그 숫자의 요소가 나올
첫번째 줄에는 입력받을 명령어의 수 N을 입력받는다.두번째 줄부터는 N개 만큼 명령어 하나씩 입력받는다. 명령은 총 여섯 가지이다. 1\. push X: 정수 X를 큐에 넣는 연산이다. 2\. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약
첫번째 줄에 카드의 장(N)개를 입력 받으면, 1번이 제일 위에 가고, N이 제일 아래 가도록 카드를 놓는다.카드를 모두 놓았다면, 제일 위에 있는 카드를 바닥에 버리고, 제일 위에 있는 카드를 아래에 있는 카드 밑으로 옮긴다. 이러한 과정을 반복해서 마지막에 남게되는
1번부터 N번 까지의 사람들이 원을 이루며 있는데, 그 N명의 사람 중 K번째를 제거하는 작업을 사라질 때까지 반복한다.(K번째를 삭제 후 K+1번이 1번이 된다. => 원형이니까)그냥 글로 설명하면 무슨 말인지 모를 수 있다. 그림으로 문제를 해석하면 아래와 같다.p
문제 해석 문제를 해석하면, 가장 첫째 줄에는 테스트케이스의 수(T)를 입력받는다. 테스트케이스의 수(T)를 입력받았다면, 각각의 테스트케이스를 입력받는데, 테스트케이스 한 개마다 2줄을 입력받는다. 일단, 테스트 케이스의 첫째 줄에는 문서의 개수(N)과 몇번째로 인
문제 해석 첫번째 줄로 명령어의 수(N)을 입력받는다. 명령어의 수(N)을 입력받았다면 두번째 줄부터 한 줄에 한개의 명령어씩 입력받는다. 명령의 종류는 아래와 같다. ✧ push_front X: 정수 X를 덱의 앞에 넣는다. ✧ push_back X: 정수
문제 해석 지민이라는 친구가 아래 1~3번을 수행한다. 첫 번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다. 왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak
문제 해석 테스트 케이스의 개수(T)만큼 수행할 함수(p), 배열에 들어있는 수의 개수(n), 그리고 괄호 사이에 수들을 n개 만큼 입력받는다. 그 배열로 함수를 수행한는데 그 마지막 결과값을 출력하면 된다. 단, 전체 테스트 케이스에 주어진 p 의 길이와 n의 합은
문제가 요구하는 바는 첫번째 줄에 0이상 20이하인 정수(N)를 입력받고, 입력을 받았다면, 팩토리얼을 구하면된다. (즉, N!을 구하는 문제, 단 재귀에 속하는 문제이므로 재귀를 써야하는 것 같다.)public class Main {}
제목이 문제인데, 우리가 아는 피보나치 수를 구하면 된다. 첫번째 줄에 n을 입력받고 n의 피보나치 수를 구하면 된다.피보나치를 구하는 방법은 아래와 같다.만약 n이 6이라고 하면 0, 1, 1, 2, 3, 5, 8(즉, Fn = fn-1 + fn-2)을 해서 구하면된
첫번째 줄에 받을 명령의 수(N)을 입력받고, N개만큼 아래의 명령을 수행한다. 1 X: 정수 X를 스택에 넣는다. (1 ≤ X ≤ 100,000) 2: 스택에 정수가 있다면 맨 위의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다. 3: 스택에 들어있는 정수
문제 해석 문제는 보자마자 '아 복잡하겠다' 싶었는데 아니나 다를까 복잡하다. 하지만, 문제 설명이 잘되어 있어서 따로 더 설명은 필요할 것 같진 않았다. 해석은 아래와 같다. 첫번째 줄에 승환이가 앞에 서있는 학생들의 수(N)을 입력받고, 두번째 줄에는 1~N 순서
첫번째 줄에 명령어의 수 N을 입력받고, 해당 명령어의 수만큼 한줄씩 명령어를 입력받는다. 입력받은 명령어의 결과 값을 차례대로 출력하면 된다.명령어의 종류는 아래와 같다.1 X: 정수 X를 덱의 앞에 넣는다. (1 ≤ X ≤ 100,000)2 X: 정수 X를 덱의 뒤
첫번째 줄에는 풍선의 개수(N)를 입력받고, 입력받은 풍선의 개수만큼 다음 차례에 터트릴 풍선의 위치(상대 값 ; 이동 값)을 입력받는다. 입력받은 이동 값들 순서대로 터트리는데 이때 터트린 풍선의 위치(절대 값)을 출력하면 된다. (처음 터트리는 풍선이 첫번째 풍선(
문제를 이해하는데 진짜 오랜 시간이 걸렸다... 내가 생각하기에 하나의 원소를 가지는 자료구조라는 것이 중요한 포인트 같다.처음엔 배열이 보이니까 한 배열이 자료구조 하나인 게 더 익숙하다보니 그런 식으로 해석하려하니 꽤 헤맸다.암튼, 문제 해석하자면 아래의 같다.첫째
이 문제는 팰린드롬인지 아닌지 판별하는 문제이다.첫번째 줄에는 테스트케이스의 개수(T)를 입력받는다. (단, T는 1이상이고 1000이하이다.)두번째 줄부터는 테스트케이스의 개수T만큼 대문자로 구성된 문자열 S가 주어진다.모두 입력받았다면 T개 만큼의 문자열이 팰린드롬
문제 해석 문제는 제목 그대로 병합 정렬을 하여 오름차순으로 정렬하는 것이다. 그렇다면, 병합 정렬(= 합병 정렬, merge sort)은 무엇일까? 분할(Divide) : 입력 배열을 같은 크기의 2개의 부분 배열로 분할한다. 정복(Conquer) : 부분 배열을
문제 해석 > ## 코드 > ## 결과 > ## 느낀 점
주어지는 수는 3의 거듭제곱인 N이다.N x N으로 별을 주어진 규칙으로 찍으면 된다. (규칙은 찾았지만 코드를 구현할 엄두가 나지 않았다.)일단, 규칙은 눈으로 보면 딱 알 수 있을 것이다. (규칙은 아래와 같다.)N = 3 => 3의 1승일 때의 규칙을 보면 3x3
입력 값은 단 하나이다. 장대에 쌓이는 원판 개수(N)이다.해당 원판이 장대1에서 위에서부터 아래로 1 2 3 4 5으로 쌓여 있다. 이 원판 순서 그대로 장대3으로 옮기면 된다. (장대2는 사용해도 된다)그리고 출력 값으로는 첫번째 줄에 옮긴 횟수(최소여야함) K를
자연수 N과 M이 주어졌을 때 1~N까지의 자연수 중에서 중복 없이 M개를 고른 수열을 구하면 된다.이 문제는 백트래킹 알고리즘을 사용하여 풀어야하는데, 백트래킹 알고리즘에 관한 설명은 POST해두었으니, 백트래킹을 처음 접한다면! 잠깐 읽고 와도 좋을 것 같다! ❗
이 문제는 전의 POST였던 N과 M (1)의 연장선인 문제이다.자연수 N과 M을 입력받았다면, 중복되는 수열을 출력하지 않고 오름차순으로 출력하면 된다. (1 3 과 3 1은 같은 수열이니 오름차순으로 정렬했을때 1 3이 먼저 출력되므로 1 3만 출력하면 된다.)pu
문제는 N과 M(2)에선 중복을 제거했더라면, N과 M(3)에서는 수열의 숫자들이 중복이 허용된 상태에서 NXN개의 경우의 수가 나오면 되는 문제이다.N이 4고 M이 2라고 가정했을 때, 기존에는 1 1가 안되었다면 이 문제는 1 1, 2 2, 3 3, 4 4를 모두
이번 문제도 N과 M(1), N과 M(2), N과 M(3)의 연장선인 문제이다.단, 출력할 때 고른 수열은 비내림차순이어야 한다는 점이 이번 문제의 Point이다.public class Main {}
N-Queen 문제는 전에 8-Queen 문제로 한 번 접해본 적이 있다. NxN으로 된 판이 있다고 가정하고, 퀸을 놓을 때 놓은 자리로 부터 행과 열, 동일한 대각선에 존재하면 안되는 문제이다.즉, 서로 공격할 수 없게 만든 모든 경우의 수를 출력하면 되는 문제이다
문제 해석 이번 문제는 스도쿠 문제로, 아래의 규칙을 지키면서 빈칸을 채우면 된다. 각각의 가로줄과 세로줄에는 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 굵은 선으로 구분되어 있는 3x3 정사각형 안에도 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 주
문제 해석 문제를 간략히 설명하자면, 주어진 각각의 연산자(+, -, x, /)의 개수를 모두 사용하고, 주어진 숫자와 연산자를 연결하여, 최댓값과 최솟값을 구하면 되는 문제이다. 예를 들어, 아래와 같이 주어졌다고 하자. > ## 코드 > ## 결과 > ##
문제 해석 문제는 일단 N과 NxN크기의 스타트링크장이 있다. 이 문제를 간략히 설명하자면 아래의 사진을 예시로 들 수 있다. 행렬이 가진 값들은 능력치 값이라고 보면 되고, 팀을 정할 때는 i열만 보고 숫자가 겹치지 않도록 짠 후, 능력치 계산은 i열 조합을 j으
이 문제는 피보나치 수를 구하는 방식으로 재귀 방식 OR 동적 프로그래밍 방식 중 어떠한 것이 좀 더 빠른지에 대해 알아보는 문제이다.주어진 의사코드를 이해하고, 코드화하면 된다. public class Main {}
문제 해석 문제는 아래와 같은 케이스로 나누어 수행한다. 이 문제의 카테고리가 동적 계획법으로써 배열 > ## 코드 > ## 결과 > ## 느낀 점
문제를 한마디로 요약하자면 0과 1만 사용할 수 있는 타일이 있고, 이 타일은 00를 1로 분해할 수 없다. 즉, 00과 1을 조합한 모든 경우의 수를 구하면 되는 문제이다.아래는 N이 6일때까지 모든 경우의 수를 찾아낸 것인데 총 개수를 보면 규칙성이 보이는 것을 확
이 문제는 전 POST 였던 01타일문제와 매우 유사한 문제이다.식이 조금 다른데, 그 외에는 거의 동일하다고 볼 수 있다. 이에 대한 설명은 아래와 같다.일단 테스트의 개수 T를 입력받고 T만큼 P(N : T개마다 주어지는 숫자)을 구하면 되는 문제인데, 피보나치수와
수열의 숫자 개수(N)만큼 숫자를 입력받고, 그 수열 중 연속된 숫자를 음수와 양수 상관없이 최댓값을 구하면 되는 문제이다.2번째 예시의 과정을 풀어내면 아래와 같다.위의 과정을 통해 14라는 최댓값을 얻게 된다.public class Main {}
문제를 한마디로 요약하면 "서로 같은 색이 인접하지 않게 최소 비용으로 색칠하기" 이다.그렇기 때문에 전에 사용하는 색 중 가장 작은 색을 누적더하기하여 최종으로 N-1(배열이기 때문에)의 최소비용을 구하면 된다. (누적 더하기를 했기 때문에)public class M
N층 만큼의 정수를 입력받은 삼각형이 있다.문제를 설명하자면 아래와 같다. 초록색 피라미드 : 기존 배열 / 주황색 피라미드 : 최댓값을 저장 배열public class Main { static int floor; static int N;}
문제가 요구하는 바를 간단하게 정리하면 아래와 같다.계단을 오를 때는 3계단을 연속으로 밟을 수 없다. (연속으로 계단을 오를 수 있는 건 1~2개의 계단만!)마지막 계단은 반드시 밟아야 한다.N이 6이라고 가정할 때 아래와 같은 과정을 거친다.public class
문제 해석 입력 받은 숫자(N)를 아래의 연산자를 통해 1을 만든다. 1) X가 3으로 나누어 떨어지면, 3으로 나눈다. 2) X가 2로 나누어 떨어지면, 2로 나눈다. 3) 1을 뺀다. 단, 중요한 점은 1로 만드는 최소 횟수를 출력해야한다!. > #
문제에서 입력받는 값은 계단의 길이인 N이다.입력받은 계단의 길이가 N인 계단의 수가 몇개인지 구하면 되는 문제이다.단, 각각의 계단 층은 1이 차이나야 하므로 몇가지 조건이 있다. 1\. 0 다음은 1밖에 오지 못한다는 점 (-1은 존재하지 않는다.)9 다음은 8
백준 2156 포도주 시식 java ver
수열의 크기 N을 입력받고, N개 만큼 수열을 이루는 숫자를 입력받는다.증가하는 데 가장 길게 증가하는 수열의 길이를 구하기 위해서 각각의 숫자가 어디에 위치해 있는지 알 필요가 있다. (아래와 같이)즉, 각의 위치가 길이가 된다.public class Main {}
바이토닉 수열은 증가 -> 감소의 형태를 띤 수열을 의미한다.하나의 수열을 가지고 바이토닉 수열로 만들어서 가장 긴 바이토닉 수열을 만들려면 왼 -> 오, 오 -> 왼로 각각의 인덱스별 증가하는 수열의 길이 값을 구해서 왼 -> 오, 오 -> 왼의 배열을 각 인덱스의
문제의 예시대로 전봇대로 그리면 아래의 사진과 같다. (기준을 전봇대 A로 설정했기 때문에 활살표로 표현해봤다.모든 단계를 작성하진 못했지만, 구하는 로직은 아래의 사진과 같다.여기서 1 -> 1인 경우는 누락되는 것이 아닌가 생각할 수 있지만, 애초에 제거해야하는 전
백준 9521 LCS JAVA ver.
문제 해석 배낭 알고리즘(Knapsack)은 물건을 쪼갤 수 있는 Fraction Knaspack Problem과 물건을 쪼갤 수 없는 0-1 knapSack Problem으로 나뉘는데 이번 백준 12865 평범한 배낭 문제는 0-1 knapSack Problem에
문제는 말그대로 주어진 구간에 해당하는 값들을 누적합 하는 문제이다.첫번째 줄에는 수의 개수(N)와 합을 구해야하는 횟수(M)가 주어진다. 두번째 줄에는 수의 개수(N)만큼 숫자를 입력 받고, 세번째 줄부터는 수가 아닌 구간을 입력받아 해당되는 구간의 수를 누적합하면
일단, 첫번째 줄에서 숫자의 개수(N) 개와 연속적인 K일(며칠간의 온도를 합할 건지!)를 입력받고, 두번째 줄에선 N개만큼의 숫자(=온도 값)를 입력받는다. 모두 입력 받았다면 N개의 숫자를 K기간 만큼의 누적합으로 시작점과 종료점을 +1만큼 증가시켜 더한다. (만약
문제는 첫 줄에 주어진 문자열(S)를 입력받고, 두번째 줄에는 질문의 개수(N)을 입력받는다. 입력받았다면 N줄 만큼 입력을 받는데 첫번째 값은 찾으려는 문자(findChar)이고, 두번째 값은 시작점(start), 세번째 값은 끝점(end)이다.50점 코드를 작성하고
문제 해석 문제 설명에 앞서 누적합을 간단하게 정리하고자 한다.(이미, 누적합 문제를 몇개 풀었지만 정리한 기억이 없어서...) 앞서 설명한대로 1부터 x까지, 즉 전체의 누적합을 코드로 변환하면 아래와 같이 설명할 수 있다. 그렇다면 구간합은 어떻게 구할까? 만
첫번째 입력 값으로는 행렬(NxN)인 N값과 구해야하는 횟수 M이 주어진다.두번째 줄 부터는 행렬(NxN)에 들어갈 숫자를 차례대로 입력받는다.행렬에 들어갈 숫자를 모두 입력받았다면, 그 다음줄 부터는 (x1, y1), (x2, y2)의 값을 M개 만큼 입력받는다.문제
첫번째 줄에서는 총 체스판의 행의 수(N), 열의 수(M), 만들어야하는 체스판의 규격(KxK)의 값을 입력받는다.두번째 줄 부터 N 줄까지 현재 체스판의 상태를 입력 받는다. (블랙의 경우 'B', 화이트의 경우 'W')모두 입력받았다면 K\*K 체스판의 다시 칠해야
문제는 크게 어렵지 않아서 간단하게 설명하고 코드로 넘어가서 주석으로 남겨둘 예정이다. (주석으로만 설명해도 충분히 이해 가능:))첫째 줄에 N(동전의 총 종류 개수)와 만들고자하는 금액(가치의 합, K)를 입력받는다.두번째 줄부터는 N개의 동전 가치 값을 입력 받는다
첫번째 줄에 회의의 수(=N)를 입력 받는다. (=회의실을 예약하려는 횟수)두번째 줄 부터 N(=회의의 수)개까지 해당 회의의 시작시간과 종료시간을 입력받는다. 그렇게 모두 입력 받았을 때 회의가 겹치지 않고 최대 몇 개의 회의를 할 수 있는 지 출력하면된다.말로는 로
첫째 줄에 사람의 수(N)을 입력 받고, N번 만큼 각 사람이 돈을 인출하는 데 걸리는 시간 P¡ 을 입력받는다.모두 입력받았으면 사람의 배치를 다르게 하여 최소 필요 시간을 구하면 된다.public class Main { public static void mai
말그대로 더하기(+)와 빼기(-)로 이루어진 식을 입력받아 괄호를 추가하여 최솟값이 나오도록 하는 문제이다.몇가지만 알고가면되는데 최솟값이 나오도록 하려면 작은수-큰수를 빼면 된다. 하지만, 여기서의 식을 쪼개 순서를 바꿀 수는 없으니 빼기(-)를 기준으로 나눠 일단
첫번째 줄에 도시(=N)의 개수를 입력 받는다.두번째 줄은 가장 왼쪽도시부터 가장 오른쪽 도시까지 인접한 도시끼리의 거리에 필요한 기름의 양을 입력받는다. 세번째 줄은 가장 왼쪽도시부터 가장 오른쪽 도시까지의 각 도시의 기름 1리터당 비용을 입력받는다.모두 입력 받았다
큰 종이(분할 전=원본)의 크기(N)를 입력받아 종이를 쪼개면서 같은 숫자(1 or 0)로만 이루어진 정사각형이 몇개인지 구하면 된다. (단 정사각형은 1(파란색) 0(흰색)의 개수를 따로 세어서 출력한다.)과정을 글로 설명하기 어려워서 그림으로 설명하면 다음과 같다.
해당 문제는 전 POST였던 2630-색종이만들기(JAVA)와 풀이방식이 매우 유사한 문제였다.색종이를 쪼갰을 때 1~4사분면으로 쪼갠 것과 같은 방식으로 분할하고, 압축할 때도 색종이의 내부 요소가 같은 글자인지 판단하는 로직을 그대로 쓰면 되는 것이기 때문에 크게
일단 NxN의 정사각형인 종이를 만들기 위해 N을 첫번째 줄에 입력받는다.입력받았다면 내부 종이의 숫자들을 NxN개 입력받는다. \-1, 0, 1 모두 같은 숫자로만 이루어질 수 있도록(-1이면 -1만, 0이면 0만, 1이면 1만) 종이를 분할하여 각각의 종이의 개수를
문제가 의미하는 바는 "첫째 줄에 A를 B번 곱한 수를 C로 나눈 나머지를 출력" 이게 다 이지만 시간 제한이 0.5초이므로 뭔가 간단하게 AXA...를 B번 곱해서 C로 진짜 나누는 문제는 아닐 것이다. (당연한거지만 ㅎ 실버 1문제가 그렇게 쉬울리가...)아무튼 분
이항 계수1에서 설명했듯이 이항계수를 구하면 된다. 문제에서 나와있듯이 이항계수만 구해서 끝나는 문제가 아니라 1,000,000,007으로 나눈 나머지의 값을 구한다. 나머지를 구하기 위해 모듈러 연산을 사용해야하는데 , (n! / r! (n-r)!) %
문제는 이산수학 접한 사람이라면 문제 자체는 큰 어려움 없이 이해할거라 생각되지만, 이산수학을 접하지 못한 사람도 있을 수 있으니 간단하게 행렬 곱셈을 어떻게 하는지만 짚고 넘어가도록 할게요:)일단, 첫번째 줄에는 NxM크기의 행렬 A의 N, M을 입력 받는다. 두번째
문제 해석 문제는 백준2740행렬 곱셈문제와 비슷한 문제로 행렬의 제곱을 구하면 된다. 첫번째 줄에서 행렬(NxN)의 크기인 N과 제곱 횟수 B를 입력받는다. ( 2 N개의 줄을 거쳐 행렬의 원소를 입력 받는다. (단, 0 < 원소 < 1,000)** 행렬 A를 B제
N을 입력받아 N번째 피보나치 수를 구한 후 1,000,000,007로 나눈 나머지를 구하면 되는 문제이다.Fn(N번째 피보나치)를 구하기 위해서 행렬제곱을 사용한 방식이다. (처음에는 그냥 피보나치 수를 재귀방식으로 더하는 방식으로만 생각했는데 다른 풀이를 보니 행렬
0을 입력받을 때까지 막대기 수(N)을 입력 받고 같은 줄에 막대기 높이를 입력받는다. 모두 입력 받았다면 막대기의 가로(너비)가 1인 막대기를 조합하여 가장 넓이가 큰 직사각형의 너비를 구하면 된다.public class Main {}
문제는 기준이 되는 배열(=N-Array)기준으로 새로 입력받는 배열(M-Array)의 각각의 요소가 기준 배열(N-Array)에 있는 요소인지 확인해서 있을 경우 1, 없을 경우 0 을 출력하면 되는 문제이다.단순히 반복문안에 반복문을 넣어서 탐색하게 되면 시간제한에