문제 : https://www.acmicpc.net/problem/11866 요세푸스 문제를 풀기 위해서는 기본적인 '요세푸스 순열' 의 개념에 대해 알고 있어야 한다. n과 k가 자연수이고, k 출처 : https://ko.wikipedia.org/wiki/%EC%9A%94%EC%84%B8%ED%91%B8%EC%8A%A4_%EB%AC%B8%EC%A0%9C 위 개념적인 설명 후에 '(7,3) 요세푸스 순열은 {3,6,2,7,5,1,4}이며 4번째 위치한 사람이 마지막으로 제외되게 된다.'라는 예시가 나와있다. 위 예시는 백준 문제와 같다. 나는 위 예시부터 이해가 되지 않았다. 7개의 수가 있고 3번째 사람부터 제거를 한다는 것 알겠지만그건 별개로 저 순열은 왜 3,6,2,7,5,1,4 순서가..
들어가며Collection 프레임워크를 공부해보다가, 문득 생각이 들었다.Collection 은 종류는 엄청 다양하고 많지만, 위 인터페이스 별로 성능이 얼마나 차이가 날까?? 라는 궁금증이 생겼다. 누가봐도 Collection 은 배열보다 많이 쓰일 것이고, 안 쓰는 사람이 없을 것이다.그리고 간단하게 보면 그냥 Collection 은 성능은 둘째 치고, 본인 비즈니스에 맞게 즉 상황에 맞게 사용하는 것이 베스트다. 그래서 어떤 상황에서 어떤 Colleciton 을 써야 성능이 더 좋을까 라는 주제를 가지고 글을 써보았다. 본론 List 는 인터페이스로 위 List 를 구현하는 구현체는 아주 다양하게 존재한다.위 사진은 List 의 간단한 Hierarchy 로 List 는 순서가 존재해야 하니 Seq..
백준 11724시간 제한메모리 제한제출정답맞힌 사람정답 비율 3 초512 MB135001609504002642.030%문제방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오.입력첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다.출력첫째 줄에 연결 요소의 개수를 출력한다.예제 입력 1 6 51 22 55 13 44 6예제 출력 1 2예제 입력 2 6 81 22 55 13 44 65 42 42 3예제 출력 2 1 ✅ 풀이 1️⃣ 문제 ..
시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 128 MB 180611 62158 44997 33.907% 문제 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 ..
시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 256 MB 209846 112078 92273 53.161% 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다..
1 초 (추가 시간 없음) 512 MB 114351 75419 52026 64.454% 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 예제 입력 1 3 4 7 10 예제 출력 1 7 44 274 풀이✔ 1️⃣ 문제 분석하..
시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 256 MB 263704 77331 54397 27.358% 문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 풀이✔ 1️⃣ 문제 분석하기 M이상 N이하의 소수를 출력하는 프로그램을 작성 해야함 소수가 무엇인지를 알아야함 소수란, 나누었을 때 몫이 자신 숫자와 1만 있는 것을 의미함. 2️⃣ 요구 조건 구현하기 Bufferedreader 생성 StringTokeinzer 생성 int N, int M = S..
시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율2 초128 MB74708353502958747.045%문제N! 에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500)출력첫째 줄에 구한 0의 개수를 출력한다.풀이✔1️⃣ 문제 분석하기N! 에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때 까지 0의 개수를 구하는 프로그램을 작성해야 함.계산된 팩토리얼의 뒤에서부터 한 자리씩 확인합니다.0이 아닌 숫자가 나올 때까지 0의 개수를 세어줍니다.예를들어 10! ⇒ 3688800 이면은→ 0의 개수는 2개이다.팩토리얼의 값에서 0의 개수를 세는 로직을 짜는게 방법!2️⃣ 요구 조건 구현하기첫째 줄에 N이 주어짐N에 대한..