본문 바로가기

구현181

[자바] 백준 2153 - 소수 단어 (boj 2153) 문제 : boj2153 1. 문자를 문제에서 제시된 방법대로 합계를 구할 수 있어야 한다. -> 문자의 각 character인 c를 확인하면서 아래처럼 구하자. - 'a'~'z'인 경우 : sum += 1+c-'a'; - 'A'~'Z'인 경우 : sum += 27+c-'A'; 2. '1'에서 구한 sum이 소수인지 소수판정을 해야 한다. -> 이 경우 2부터 sqrt(sum) 까지의 정수로 직접 나눠보고, 이 중 하나라도 sum을 나누어떨어지게(나머지가 0) 하는 값이 있다면 소수가 아니다. sqrt(sum) 까지 확인하는 이유는 '에라토스테네스의 체 혹은 소수판정 시 제곱근 까지만 확인하면 되는 이유' 글에 적어두었다(링크). 코드 : github import java.io.BufferedReader;.. 2022. 7. 5.
[자바] 백준 23802 - 골뱅이 찍기 - 뒤집힌 ㄱ (boj java) 문제 : boj23802 규칙을 잘 찾아 그대로 구현해보자. 규칙은 아래와 같다. 1. N개의 줄에 5N개 만큼의 '@'을 출력한다. 2. 4*N개의 줄에 N개의 '@'를 출력한다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { private void solution() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); f.. 2022. 7. 3.
[자바] 백준 20001 - 고무오리 디버깅 (boj java) 문제 : boj20001 남은 문제에 해당하는 cnt를 둔다. 이 경우 1. '문제'가 입력으로 들어왔을 때 cnt를 1 줄인다. cnt가 -1이라면 cnt를 2로 변경한다. 2. '고무오리'가 입력으로 들어왔을 때 cnt를 1 늘린다. 최종적으로 '고무오리 디버깅 끝'이 들어왔을 때 cnt가 0이라면 '고무오리야 사랑해', 아니라면 '힝구'를 출력해주면 된다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { private void solution() throws Exception { BufferedReader br = new BufferedReader(new InputStream.. 2022. 7. 1.
[자바] 백준 12873 - 기념품 (boj java) 문제 : boj12873 리스트를 하나 두고 미리 1부터 N까지를 순서대로 넣어놔보자. 그럼 이제 단계를 A라고 할 때, 1단계부터 N-1단계까지 A^3번을 리스트 순회하다가 해당 횟수에서 제외시키는 식으로만 진행하면 된다! 다만 이 경우 O(N*N^3) = O(N^4) 이라서 시간초과를 피하기 힘들 것이다. 약간만 생각해보면, 예를들어서 현재 6명이 리스트에 남아있고 4001단계이다. 그럼 4001 실제로 6명을 가지고 약640억번 돌아볼게 아니고, 어차피 한바퀴 돌면 제자리일테니 640억을 6으로 나눈만큼만 돌면 된다! 4001^3 % 6 = 5이다. 이런식으로 A단계에 대해 'A^3 % [현재남은수]'를 계산해서 그만큼만 움직이면 된다. 그럼 총 O(N^2)으로 줄어든다. 추가로 int가 연산이 더.. 2022. 6. 30.
[자바] 백준 17826 - 나의 학점은? (boj java) 문제 : boj17826 이미 내림차순으로 정렬된 점수 데이터가 들어온다. arr[i]가 i번째 입력값이라고 해보자. 우선 50개의 데이터를 입력받은 후 (arr[1]~arr[50]) 홍익이의 점수 n을 입력받는다. 그리고 i라는 값을 1부터 50까지 증가시키면서 arr[i]가 n보다 작거나 같은 값이 나올 때 멈춘다. 그 때의 i가 홍익이의 등수가 된다. 이후 i를 기준으로 문제에서 제시된대로 A+, A0, ... 을 조건문을 통해 출력해주면 된다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { private void.. 2022. 6. 29.
[자바] 백준 23806 - 골뱅이 찍기 - ㅁ (boj java) 문제 : boj23806 규칙을 잘 찾아 그대로 구현해보자. 규칙은 아래와 같다. 1. N개의 줄에 5N개 만큼의 '@'을 출력한다. 2. 3*N개의 줄에 N개의 '@', 3N개의 ' '(공백), N개의 '@'을 차례대로 출력한다. 3. N개의 줄에 5N개 만큼의 '@'을 출력한다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { private void solution() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(.. 2022. 6. 29.
[자바] 백준 23794 - 골뱅이 찍기 - 정사각형 (boj java) 문제 : boj23794 규칙을 잘 찾아보자. 우선 첫 번째 줄과 마지막줄에는 N+2개의 '@'를 출력한다. 그 사이 N개의 줄은 각각 시작과 끝이 '@' 이고, 그 사이에 공백 N개가 출력된다. 위의 규칙을 코드로 구현해주면 된다. 이하 N=10인 경우! 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { private void solution() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine());.. 2022. 6. 27.
[자바] 백준 23803 - 골뱅이 찍기 - ㄴ (boj java) 문제 : boj23803 입력과 출력을 보고 규칙을 잘 찾은 후 구현해내면 된다. 규칙찾기는 아래와 같다. 1. 4*N개의 줄을 각각 N개의 골뱅이를 가로로 채운다. 2. N개의 줄에 각각 5*N개의 골뱅이를 가로로 채운다. 위의 규칙을 그대로 코드로 구현해내면 된다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { private void solution() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readL.. 2022. 6. 26.
[자바] 백준 14625 - 냉동식품 (boj java) 문제 : boj14625 시작시간부터 종료시간까지 각 분마다 어떠한 숫자들이 표시될지만 잘 판단할 수 있다면 풀 수 있다. 함수를 나눠보자. 필요한건 결국 1. 시작시간부터 시작해서 종료시간까지 1분씩 잘 더해줄 수 있는 함수 2. '1'의 각 시간에서 N이 포함되어 있는지 판단해주는 함수 위의 두 개만 있으면 된다. 문자로 해도 상관없지만, 내 경우엔 숫자로 처리했다. '1'에 해당하는 부분이 plusMin, '2'에 해당하는게 canSee 이다. 찾는 방법은 코드를 참고해보자. 주의점은 HHMM 형태이므로, int로 나타냈을 때 1000이하의 수라면, 예를들어서 5시 34분이라면 534라고 표현될 것이다. 실제론 맨 앞에 0이 있다고 봐야 하므로 N이 0일 경우 1000 이하의 수라면 0이 항상 존재.. 2022. 6. 25.
[자바] 백준 23037 - 5의 수난 (boj java) 문제 : boj23037 입력으로 들어온 문자를 한 자리씩 숫자로 바꿔주는 부분과 n^5을 리턴해주는 함수를 정의해주면 깔끔하게 풀 수 있다. 입력은 int로 받은 후, 해당 값이 a라면 a%10으로 한자리씩 뽑고 -> a/=10으로 다음 자리로 이동하는 식으로 한 자리씩 수를 얻을 수 있다. 혹은 이하 코드처럼 String으로 받은 후, 각 자리수의 character를 숫자로 변경해줘도 된다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { private int pow5(int n) { return n*n*n*n*n; } private void solution() throws E.. 2022. 6. 22.