알고리즘 공부/백준 문제풀이 144

🎉축!🎉 백준 100일 연속 문제 해결!!

🎊잔디 100일 연속 달성🎊 암것도 모르던 코린이 자바를 고작 두 달 배우고 정올 문제 풀 때는 간단한 문자열 자르기도 어려워하고, 별찍기도 제대로 하나도 못하던, 팩토리얼 구현하라 그러면 그 간단한 5줄을 못 적어서 3시간을 끙끙거렸다. 그런데 새싹 문제부터 차근차근 시작하다보니 연속 100일이 되었다. 브론즈 1~2는 손도 못대겠다고 어떻게 해야 풀 수 있냐고 글 올렸던 때가 이번 달이였는데, 확실히 자료구조 공부하니까 이제는 실버문제만 풀게 되었다. 2022년 안에 꼭 골드 단다!! 사실 자료구조라는걸 배우기 시작한 2022년 11월(이번 달)부터이기도 하고, 백준만 푸는게 아니라 프로그래머스, Cos Pro 다 병행하다보니..어느순간 백준 문제 푸는게 더뎌짐. (근데 프로그래머스 맛본 이유로 자꾸..

[백준] 1463 : 1로 만들기 (JAVA)

1로 만들기 시간 제한메모리 제한제출정답맞힌 사람정답 비율 0.15 초 (하단 참고) 128 MB 229129 75490 48351 32.288% 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 예제 입력 1 복사 2 예제 출력 1 복사 1 예제 입력 2 복사 10 예제 출력 2 복사 3 힌트 10의 경우에 10 -> ..

[백준] 10866 덱 (JAVA)

백준 10866 자바 덱 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율 0.5 초 (추가 시간 없음) 256 MB 55268 30309 25610 56.152% 문제 정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여덟 가지이다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 ..

[백준] 1929 : 소수 구하기(JAVA)

1929 자바 에라토스테네스의 체 자바 소수 구하기 성공 시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 256 MB 209263 59135 41704 26.581% 문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 예제 입력 1 복사 3 16 예제 출력 1 복사 3 5 7 11 13 출처 데이터를 추가한 사람: jinjean0123, yongjun042 알고리즘 분류 수학 정수론 소수 판정 에라토스테네스의 체 처음에는 그냥 구했다가 런타임 에러만 떴따.. 소수..

[백준] 11866 : 요세푸스 문제 0 (JAVA)

백준 11866 자바 요세푸스 문제 0 시간 제한메모리 제한제출정답맞힌 사람정답 비율 2 초 512 MB 46692 26538 22401 56.750% 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주..

[백준] 1620 나는야 포켓몬 마스터 이다솜 (JAVA)

백준 1620 자바 입력 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 물어봐도 괜찮아. 나는 언제든지 질문에 답해줄 준비가 되어있어. 둘째 줄부터 N개의 줄에 포켓몬의 번호가 1번인 포켓몬부터 N번에 해당하는 포켓몬까지 한 줄에 하나씩 입력으로 들어와. 포켓몬의 이름은 모두 영어로만 이루어져있고, 또, 음... 첫 글자만 대문자이고, 나머지 문자는 소문자로만 이루어져 있어. 아참! 일부 포켓몬은 마지막 문자만 대문자일 수도 있어. 포켓몬 이름의 최대 길이는 20, 최소 길이는 2야. 그 다음 줄부터 총 M개의 줄에 내가 맞춰야하는 문제가 입력으로..

[백준] 1764 듣보잡 (JAVA)

백준 1764 자바 듣보잡 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 256 MB 63993 26793 20493 40.304% 문제 김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다. 듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다. 출력..

[백준] 2164 : 카드2 (JAVA)

백준2164 자바 카드2 성공 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 (추가 시간 없음) 128 MB 65516 33735 27566 51.618% 문제 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버..

[백준] 10815 숫자카드 (JAVA)

숫자 카드 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 256 MB 64235 29697 21243 45.422% 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 두 숫자 카드에 같은 수가 적혀있는 경우는 없다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다...

[백준]1026 보물(JAVA)

보물 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 44120 28432 24179 66.904% 문제 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0] × B[0] + ... + A[N-1] × B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다. S의 최솟값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같..