PS
BOJ 2089 -2진수 [Java]
BOJ 2089 -2진수 1. 문제 링크 https://www.acmicpc.net/problem/2089 2. 문제 해설 -2진수도 2진수와 같이 결국 1과 0으로만 표현해야한다. 10진수를 2진수로 바꿔줄 때와 비슷하게 10진수를 -2로 나누어주며 과정이 진행된다. -2로 나누어주면 나머지가 0 혹은 -1이 나오는데 0의 경우는 2진수와 동일하게 처리가 가능하지만, -1의 경우는 다른 방식이 필요하다. 나머지가 -1인 경우를 어떻게 처리하는지 예시를 들어보겠다. 7을 -2로 나누는 경우를 생각해보자. 7 / (-2) = (-2) x (3) - 1 이다. 이것을 다르게 표현하면, 7 / (-2) = (-2) x (4) + 1 이다. 즉, 나머지가 -1인 경우에는 나머지를 1로 바꿔주고 몫을 1 더해주면..
BOJ 1978 소수 찾기 [Java]
BOJ 1978 소수 찾기 1. 문제 링크 https://www.acmicpc.net/problem/1978 2. 문제 해설 소수인지 아닌지 판별해야하는 수가 1000이하이고 100개 이하로 주어진다. 주어진 조건의 범위가 작기에 1부터 1000까지 전부 다 나눠보는 방식으로 하여도 충분히 시간 제한을 만족한다. 입력 받은 수가 소수인지 판별하는 isPrime 메소드를 만들었다. cnt는 소수의 갯수를 의미한다. 주어진 n개의 수에 isPrime 메소드를 이용하여 소수인지 판별하고, 소수라면 cnt를 1 더해준다. 최종적으로 cnt를 출력한다. 3. 코드 보기 import java.io.*; import java.util.*; public class Main { static boolean isPrime(..
BOJ 2745 진법 변환 [Java]
BOJ 2745 진법 변환 1. 문제 링크 https://www.acmicpc.net/problem/2745 2. 문제 해설 B진법의 수를 10진법으로 변환하는 방법을 알아보자. 예시로 2진법 수 11001(2진수)을 들겠다. 1x2^4 + 1x2^3 + 0x2^2 + 0x2^1 + 1x2^0 = 25 이다. N진법 수를 각 자리마다 10진법으로 변환하여 sum에 더해주어 10진수를 구했다. 이 때, N진법 수를 string으로 받았기에 아스키 코드를 이용한 문자열 파싱을 해주었다. 3. 코드 보기 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException ..
BOJ 11005 진법 변환 2 [Java]
BOJ 11005 진법 변환 2 - 문제 링크 https://www.acmicpc.net/problem/11005 - 문제 해설 10진수를 어떻게 진법 변환해주는지를 알아야한다. 간단하게 10진수 10을 2진수로 나타낸다고 해보자. - 10을 2로 나눈다. 몫이 5이고 나머지가 0이다. - 몫 5를 2로 나눈다. 몫이 2이고 나머지가 1이다. - 몫 2를 2로 나눈다. 몫이 1이고 나머지가 0이다. - 몫 1을 2로 나눈다. 몫이 0이고 나머지가 1이다. - 몫이 0이 되면 나눠주는 행위를 그만두고, 나머지를 최종 나머지부터 처음 순으로 써준다. ex) 10 = 1010(2진수) 위 예시에서는 2진수라서 2로 나눠주었지만, n진수라면 n으로 나누어주면 된다. 문제에서 숫자를 표현할 떄 0~9까지는 그대로..
BOJ 9613 GCD 합 [Java]
BOJ 9613 GCD 합 - 문제 링크 https://www.acmicpc.net/problem/9613 - 문제 해설 3중 for문을 이용하여 풀었다. 시간복잡도가 O(N^2xT)인데, 최대 연산 수가 100x100x100 = 1,000,000 이므로 제한 시간 1초 안에 충분히 가능하다. 최대공약수는 두 수를 입력 받으면 최대공약수를 반환하는 gcd 함수를 유클리드 호제법을 이용하여 만들어 해결했다. 그리고 테스트 케이스마다 주어지는 수들을 다 순회하면서 gcd 함수를 실행하고 그 값을 sum에 더해주어 문제를 해결했다. - 코드 보기 import java.io.*; import java.util.*; public class Main { public static long gcd(int x, int ..