본문 바로가기

코딩 테스트/[JAVA] 백준16

[JAVA] 백준 1598번 꼬리를 무는 숫자 나열 | BOJ 자바 bronze 3 꼬리를 무는 숫자 나열 동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 원주 부근을 돌아다니다가 코레스코 콘도에서 아주 재밌는 놀이를 발견했다. 그 놀이의 이름은 바로 “꼬리를 무는 숫자 나열”. 이제부터 원숭이가 그토록 좋아하던 그 놀이를 파헤쳐보자. 놀이의 방법은 간단하다. 일단 4줄짜리 표에 왼쪽부터 수를 아래로 1부터 순서대로 적어나간다. 다음에 그 예가 잘 나타나있다. 이제 원숭이는 두 개의 자연수를 아무거나 생각한다. 그리고 숫자판에서 두 개의 자연수 사이의 직각거리를 구하면 된다. 여기서 직각거리는 동서방향거리와 남북방향거리의 합을 뜻한다. 예를 들어 저 숫자판에서 11과 33을 생각했다고 하자. 그렇다면 11과 33사이의 직각거리는 8이 된다.(동서방향거리 : 6,.. 2022. 3. 15.
[JAVA] 백준 1373번 2진수 8진수 2진수 8진수 2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오. 예제 입출력 입력 출력 11001100 314 개념 2진수를 8진수로 변환하는 방법은 뒤에서부터 3자리씩 자르고 10진수로 변환하는 방법이다. 코드 1. 입력받은 2진수의 길이에 따라 0 추가하기 앞에서부터 자르기 위해 입력값의 길이를 3으로 나눈 나머지에 따라 앞자리에 0을 추가해준다. StringBuilder.insert(int i, String str) insert 메소드를 사용하여 i번째에 str을 추가할 수 있다. → binary.insert(0, "0"); // 0번째에 "0" 추가 2. 2진수를 10진수로 변환하는 메소드 구현 2진수를 세 자리씩 자르고 10진수로 변환하여 합친 것이 8진수이다. [JAVA] 2진수.. 2022. 3. 15.
[JAVA] 백준 8674번 Tabliczka Tabliczka 엄마는 Piotr와 Pawełek에게 초콜릿 바(크기: a 및 b )를 가져왔습니다 . 소년들은 수직 또는 수평 큐브를 따라 한 번의 간단한 방법으로 초콜릿을 나누기를 원합니다. 소년들은 초콜릿을 가능한 한 공평하게 나누기를 원합니다. 즉, 각 조각의 차이가 가능한 한 작도록 합니다. 폴란드어라 구글 번역기를 돌려 문제를 가져왔습니다. 예제 입출력 입력 출력 5 3 3 코드 a, b의 범위는 (1 ≤ a, b ≤ 2^32)으로 int형을 벗어났지만 long형에 걸쳐있다. 1. 두 개의 정수 중 한 개가 짝수라면 공평하게 초콜릿 조각을 나눌 수 있다. 2. 두 수가 모두 홀수라면 공평하게 나누었을 경우 두 수 중 작은 수가 남는다. import java.util.Arrays; import.. 2022. 3. 10.
[JAVA] 백준 5893번 17배 17배 문제 상근이는 이진수 곱셈에 어려움을 겪는 여자친구를 위한 프로그램을 만들려고 한다. 상근이의 여자친구는 항상 이진수에 17을 곱한다. 즉, 이진수 N이 입력으로 들어오면 17을 곱한 다음 이진수로 출력하는 프로그램을 작성하시오. 예제 입출력 입력 출력 10110111 110000100111 코드 흐름 1. 이진수를 입력받는다. 2. 몇 개의 0이 들어오든 1이 없으면 무조건 0을 반환한다. 3. 이진수를 십진수로 변환한다. 4. 변환한 십진수에 17을 곱한다. 5. 곱한 수를 다시 이진수로 변환한다. 참고 ✨ 1. N은 최대 1000자리인 이진수이다. - int형을 넘어가는 범위이므로 이진수를 String으로 받아 사용했다. - int형을 사용할 수 없으므로 정수를 사용할 때 BigInteger.. 2022. 3. 10.
[JAVA] 백준 14623번 감정이입 감정이입 예제 입출력 입력 출력 1010 11 11110 1000 100 100000 코드 입력에는 두 이진수가 들어오고 두 이진수의 길이는 1 이상 30 이하의 자연수가 들어온다. 해당 범위는 int의 범위와 long 범위를 벗어났기에 BigInteger로 구현하였다. BigInteger a = scanner.nextBigInteger(2); 2진표현을 포함한 바이트 배열을 BigInteger로 받기 위해 매개변수로 2를 넘겼다. BigInteger multiply = a.multiply(b); multiply() 메소드는 BigInteger의 곱셈의 메소드이다. a와 b의 곱을 multiply 변수에 저장하였다. String answer = multiply.toString(2); toString() .. 2022. 3. 10.
[2884] 알람 시계 / 백준 baekjoon 2884번 알람 시계 | C++ 45분 일찍 알람 설정하기 문제 설명 원래 설정되어 있는 알람을 45분 앞서는 프로그램을 작성하세요. 스토리텔링 더보기 입력 두 정수 H, M이 주어집니다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 이것은 처음 설정한 알람 시간 H시 M분을 의미합니다. 입력 시간은 24시간 표현을 사용합니다. 하루의 시작 0 : 0 끝 23 : 59 출력 45분 일찍 설정된 알람 시간을 출력합니다. 코드 해석 및 전체 코드 1. m이 45분보다 크거나 같거나 작은지 확인한다. m의 범위는 0 ≤ M ≤ 59으로 45보다 크거나 같으면 m에서 바로 45분(mi)을 빼준다. 45분보다 작을 시 2. h가 0인지 아닌지 확인한다. 45분보다 작으면 h에서 1을 빼야되므로 0시일 시 하루 전인 23시가 된다. 이때 else.. 2021. 5. 6.
[2588] 곱셈 / 백준 baekjoon 2588번 곱셈 | C++ (세 자릿수) x (세 자릿수) 문제 설명 (세 자릿수) x (세 자리 수) 계산 과정 출력하기 입력 : (1), (2) 출력 : (3), (4), (5), (6) 예시 input output 472 385 2360 3776 1416 181720 코드 해석 및 전체 코드 for문 해석 for (int i = 1; num2 / i != 0; i *= 10){ ... } int i = 1; 주석 1-1에서 num2를 1로 나누기 위해 i의 초깃값을 1로 준다. num2 / i != 0; num2를 i(1, 10, 100, ...)으로 나누어 num2가 0일 때 포문을 나간다. i *= 10 주석 1-2, 1-3을 도출하기 위해 i를 10의 배수로 곱한다. for문 돈 횟수 i num2 / i (num2 = .. 2021. 5. 4.