본문 바로가기

PS/BOJ764

[자바] 백준 9324 - 진짜 메시지 (java) 문제 : boj9324 필요 알고리즘 개념 문자열, 파싱, 구현 입력으로 주어진 문자열을 파싱하면서 문제에서 제시된대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에서 제시된걸 구현하기 위해 필요한 항목은 다음과 같다. 1. 현재 문자열의 i번째 문자를 보고있을 때, 현재까지 i번째 문자와 동일한 문자가 이전에 몇 번 나왔는지 알 수 있어야 한다. -> 대문자만 입력으로 들어오므로, A부터 Z까지 2.. 2022. 9. 29.
[자바] 백준 25644 - 최대 상승 (java) 문제 : boj25644 필요 알고리즘 개념 그리디 매번 입력 중 최소값과, '현재값-최소값'의 최대값을 갱신하면서 모든 경우를 보면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제를 풀 때 주의할점이, 문제의 조건이 '주식 한 주를 적당한 시점에 사고 적당한 시점에 팔아서 얻을 수 있는 최대 이득' 이므로 딱 한번만 주식을 사야 한다는 점이다. 즉 입력이 '1 5 2 6' 일 경우 1에사고 5에 팔아서 4의 .. 2022. 9. 29.
[자바] 백준 14912 - 숫자 빈도수 (java) 문제 : boj14912 필요 알고리즘 개념 브루트포스 모든 경우의수를 확인해보면 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 최대 n은 10만이고, 최대 자리수는 6개이다. 따라서 1부터 n까지 모든 자리수를 하나씩 비교해보더라도 O(N)이면 되므로 브루트포스로 모든 경우를 확인해주면 된다. 각 자리수를 모두 확인하려면 우선 편한 방법으로는 1부터 n까지 각 수를 String으로 변경해준 뒤 Str.. 2022. 9. 29.
[자바] 백준 2740 - 행렬 곱셈 (java) 문제 : boj2740 필요 알고리즘 개념 구현, 수학 행렬 곱셈하는 방법을 알고 있다는 전제하에, 단순 구현문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 혹시 행렬 곱셈 방법을 모른다면 애초에 이 문제를 풀 수 없으니 구글링을 통해 행렬 곱셈방법을 알아보자. 알고있다면, 이제 구현력(?)에 달려있다. 두 행렬을 입력받은 후 행렬 곱셈을 해주는 코드를 작성하면 되며, 구현방식을 잘 모르겠다면 이하 코드의 matri.. 2022. 9. 29.
[자바] 백준 6086 - 최대 유량 (java) 문제 : boj6086 필요 알고리즘 개념 네트워크 플로우 (최대 유량) 최대 유량 기본 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 내 경우엔 에드몬드-카프 알고리즘을 사용해 최대 유량을 구했다. 에드몬드-카프 알고리즘을 적용할 수 있는 기본 문제로, 별도로 구현에 대해서는 풀이하지 않는다. 주의점은 입력으로 들어온 간선의 용량(capacity)이 양방향이라는 점이다. 즉, 'A B 3'과 함께 'B A 3'도.. 2022. 9. 25.
[자바] 백준 9440 - 숫자 더하기 (java) 문제 : boj9440 필요 알고리즘 개념 정렬 + 그리디 정렬을 통해 매번 낮은 수 부터 확인하는 그리디 개념으로 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제에서 가장 처리하기 까다로운 부분은 두 수가 0으로 시작하면 안된다는 점이다. 그러니 우선 입력값에 0이 없다고 생각하고 한번 생각해보자. 1,2,7,8이 있다면 두 수를 어떻게 정해야 할까? 중요한건 각 자리수에 어떤 수 2개를 사용할지이다... 2022. 9. 23.
[자바] 백준 12993 - 이동3 (java) 문제 : boj12993 필요 알고리즘 개념 정수론, 수학 수학적인 사고가 약간 필요하다. 그리디 태그엔 없긴한데 내 경우엔 그리디 개념으로 풀었다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 x, y 중 큰 값이 [3^a, 3^(a+1)) 일 때, k=a 부터 0까지 감소하면서 현재 남은 x와 y중 큰 값에 3^k를 그리디하게 빼준다. 최종적으로 x와 y 모두 0이 되면 1을 출력해주고, 아니면 0을 출력해준다.. 이 .. 2022. 9. 22.
[자바] 백준 17412 - 도시 왕복하기 1 (java) 문제 : boj17412 필요 알고리즘 개념 네트워크 플로우 (최대 유량) 최대 유량 기본 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 내 경우엔 에드몬드-카프 알고리즘을 사용해 최대 유량을 구했다. 완전 기본 형태의 문제로, 간선이 존재하는 방향으로 용량(capacity)을 1로 잡고 알고리즘을 구현해주면 된다. 코드 : github import java.io.BufferedReader; import java... 2022. 9. 21.
[자바] 백준 1706 - 크로스워드 (java) 문제 : boj1706 필요 알고리즘 개념 문자열, 파싱 문자열을 파싱해서 원하는 형태로 사용할 수 있어야 한다. 구현 문제에서 제시된대로 구현만 해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 문제를 잘 파악해보자. 가로나 세로로 1개 초과로 연속된 문자열을 모두 뽑아낼 수 있다면, 그 중 가장 사전순으로 앞서는 문자를 출력해주면 된다. 위에서 "good" "an" "messy" ... "sit" "byt.. 2022. 9. 21.
[자바] 백준 16956 - 늑대와 양 (java) 문제 : boj16956 필요 알고리즘 개념 애드 혹, 구성적 어떨 때 늑대와 양을 분리시킬 수 있는지와 없는지 생각해보면 생각보다 간단하게 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 어떨 때 무슨짓을 해도 늑대가 양이 있는 칸으로 갈 수 있을까? S와 W가 인접해있는 경우이다. 즉 1. SW 2. WS 3. S W 4. W S 위와 같은 경우엔 무슨짓을 해도 늑대가 양한테 갈 수 있다. 따라서 위와 .. 2022. 9. 19.