백준 KOI 2019 초등부 4

[JAVA] 백준 17609번 : 회문(한국정보올림피아드/KOI 2019 1차대회/초등부)

www.acmicpc.net/problem/17609 문제 회문인지, 유사 회문(한글자만 삭제하면 회문이 되는 경우)인지, 일반 문자열인지 확인하는 문제이다. 해결 방안 주어진 단어의 첫 부분은 증가시키고 끝 부분은 감소시키면서 비교해온다. 이 때 단어의 변화되는 첫 부분 문자와 끝 부분의 문자가 가운데에 올 때가지 같으면 회문(0)이다. 그렇지 않은 경우 첫 부분을 하나 증가시키거나 끝 부분을 하나 감소시켜서 한 글자를 삭제 시켜서 확인을 해보고 둘 중 하나의 경우라도 회문이면 유사회문(1)이고 둘다 안되면 일반 문자열(2)인 경우이다. 이를 코드로 나타내면 아래와 같다. 코드 import java.io.BufferedReader; import java.io.IOException; import java..

[JAVA] 백준 17608번 : 막대기(한국정보올림피아드/KOI 2019 1차대회/초등부)

www.acmicpc.net/problem/17608 문제 해결 방안 뒤에서부터 확인을 하므로 Stack을 이용하여 구현하였다. 기준 막대기높이(standard)보다 비교하는 막대기높이(current)가 크면 갯수를 하나씩 늘려주고 standard를 current로 바꿔준다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; // 막대기 public class Main { public static void main(String[] args) throws IOException { Stack stack = new Stack(); BufferedR..

[JAVA] 백준 17615번 : 볼 모으기(한국정보올림피아드/KOI 2019 2차대회/초등부)

문제 그리디 문제이다. 해결 방안 처음에 R과 B의 갯수를 각각 세어서 rCnt, bCnt에 저장해준다. 그리디 문제로 볼을 이동하는 4가지 방법 중 최소 이동횟수를 구하면 된다. 1. R공을 모두 왼쪽으로 이동 문제의 그림1을 볼때 RRRRBBBB로 나열하기 위해서는 첫번째 R을 제외하고는 다 옮겨줘야 한다. 따라서 왼쪽에 R이 계속 있을경우 cnt를 세어준다음 Rcnt-cnt는 이동해야하는 R공의 갯수가 된다. ex) RBBBRBRRR인 경우 첫번째 R이 있으므로 cnt = 1이된다. 따라서 Rcnt(5)-cnt(1)=4가 되고 실제로 왼쪽으로 이동해야하는 R공의 갯수가 된다. 2. R공을 모두 오른쪽으로 이동 3. B공을 모두 왼쪽으로 이동 4. B공을 모두 오른쪽으로 이동 2,3,4번도 뒤에서부터..

[JAVA] 백준 17614번 : 369(한국정보올림피아드/KOI 2019 2차대회/초등부)

www.acmicpc.net/problem/17614 문제 369 규칙에 맞게 1~N까지 나왔을때 N까지 박수의 총 횟수를 출력하는 것이다. 해결 방안 1~N까지 완전 탐색을 해주며 각 수의 자릿수들이 3,6,9인경우 result 변수를 하나씩 증가해주었다. ex) 13 이면 박수 한번 33이면 박수 두번 가 되야 하므로 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; // 한국정보올림피아드 // KOI 2019 2차대회 초등부 // 369 public class Main { public static void main(String args[]) throws Exception { Bu..