반응형

백준 문제 15

[백준] 1193번 분수 찾기 코드 (Java 자바)

무한히 큰 배열에서 위 표와 같은 분수를 배열해놓고 지그재그로 나열하였다.그 때 입력값에 해당하는 분수를 출력하는 문제이다.접근 방법)일단 저 표를 먼저 쉽게 바꿔보자. 아래 그림과 같은 규칙을 가지고 있다.하지만 이 규칙을 코드로 어떻게 구현할 것이냐.. x축의 변수를 number_X라 하고 y축의 변수를 number_Y라고 하자.number_X가 3이고, number_Y가 4인 값은 3/2인것이다. 하지만 문제가 있다 number_Y가 1인 첫번째 줄을 제외하고 홀수줄과 짝수줄 출력 패턴이 반대인 것을 확인할 수 있다.그럼 number_Y가 홀수, 짝수 여부에 따라 출력을 다르게 해야한다. 결과적으로 짝수일 때는 number_X+"/"+(number_Y+1-number_X)를 출력하고,홀수일 때는 n..

[백준] 2292번 벌집 풀이 코드 (Java 자바)

중앙 1번부터 시작해서 시계방향으로 점점 숫자를 쌓아 들려가고 있다. 주어진 번호가 중앙 1번부터 최소 몇 개의 방을 지나가는지 출력하는 문제이다.접근 방법)우선 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 구하기 위해 어렵게 생각할 필요 없다.단순하게 '몇 겹째에 해당 숫자가 존재하는지 출력하시오'를 어렵게 말로 풀이해 놓은것이다. 점의 개수 증가 규칙첫 번째 중앙에는 점이 1개, 두 번째 겹에는 7개, 세 번째 겹에는 19개가 배치되는 방식으로 점의 개수가 점점 늘어난다.이 과정에서 겹마다 점의 개수는 특정 규칙을 따른다. 각 겹에서 점의 개수는 6 × 1, 6 × 2, 6 × 3, ... 형태로 증가한다. 위 규칙을 기반으로 다양한 코드를 작성할 수 있다.나같은 경우는 N 값에서 각 겹의..

[백준] 2903번 중앙 이동 알고리즘 풀이 코드 (Java 자바)

일정한 규칙에 따라 점점 늘어나는 점들의 개수를 출력하는 문제이다.접근 방법)이 문제는 점의 개수가 특정 규칙에 따라 증가하는 패턴을 찾아서 최종적으로 점의 개수를 구하는 문제이다. 복잡해 보이지만 한 변의 점 개수의 규칙을 이해하면 금방 해결할 수 있다. 점의 개수 증가 규칙한 변의 점 개수가 N에서 시작했다고 가정하면, 다음 단계에서는 (N-1) + N만큼 점이 찍힌다.이 규칙을 반복적으로 적용하면 한 변의 점 개수를 구할 수 있다. 누적합과 제곱 활용한 변의 점 개수를 구한 후, 그 값을 제곱하면 전체 점의 개수를 구할 수 있다.이를 for문과 누적 합을 활용하여 구현하면 된다.  정답 코드 1)import java.util.*;import java.lang.*;import java.io.*;// ..

[백준] 2720번 세탁소 사장 동혁 풀이 코드 (Java 자바)

주어진 입력 값(거스름돈)에 필요한 동전 개수를 나열하여 출력하는 문제이다.접근 방법)입력 값 첫째 줄에 테스트 케이스의 개수가 주어져서 그만큼 거스름돈 계산을 해야 한다.그러기 때문에 일단 T만큼 반복 작업을 하는 for문을 생성하자. 그다음 for문 안에서 C값을 받고 쿼터로 나눠준다. 그 몫은 출력하고 나머지는 다임으로 나눠준다. 마찬가지로 그 몫은 출력하고 나머지는 니켈로 나눠준다. 이 작업을 페니까지 계산해 주면 된다. 정답 코드 1)import java.util.*;import java.lang.*;import java.io.*;// The main method must be in a class named "Main".class Main { public static void main(St..

[백준] 11005번 진법 변환2 풀이 코드 (Java 자바)

해당 주어진 숫자를 해당 B진법으로 바꾸어 출력하는 문제이다.N을 B진법으로 바꾸는 방법에 대해 아래 그림을 통해 간단하게 살펴보자. 아래 예시는 46을 2진법으로 바꾸어 101110 값이 도출되는 과정을 적어놓았다.이것을 코드로 어떻게 변환하여 짜야할지 고민을 해보자.접근 방법)N을 B진법으로 나누는 과정은 정말 간단하다.N을 B로 나누고 그 몫을 B로 계속해서 몫이 0일 될 때까지 나누는데, 그 과정에서 나오는 몫과 나머지 중 나머지가 이 문제 출력값에 해당되는 값이다. while문을 이용하여 몫이 0보다 클 때까지 B로 계속 나누는 작업을 해주어야한다.그러면 나머지를 0, 1, 1, 1, 0, 1 순으로 얻을 수 있게 되는데 우리가 필요한 값은 1, 0, 1, 1, 1, 0이다.(추가로 나머지가 1..

[백준] 2745번 진법 변환 풀이 코드 (Java 자바)

주어진 수를 해당 진법으로 바꾸어 출력하는 문제이다.접근 방법)일단 주어진 N 값을 하나하나 입력받아와서 우리가 알고 있는 숫자로 변환을 시켜주어야 한다.그러기 위해서는 아스키코드를 사용하여 문제를 해결할 수 있다.또한 주어진 N에서 입력받은 값이 숫자일 수도 있고 영어일 수도 있기 때문에 if(조건문)을 사용하여 경우 수를 나누어주도록 한다. 이렇게 N을 문자 하나씩 나누어 입력받은 것이 성공하였다면 Math.pow() 함수를 이용하여 제곱 계산을 처리하면 정답을 성공적으로 출력할 수 있다. 정답 코드 1)import java.util.*;import java.lang.*;import java.io.*;// The main method must be in a class named "Main".class..

[백준] 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 코드 (Java 자바)

예제 입력과 비교하여 부족하거나 많은 체스 피스 개수를 계산하는 문제이다.접근 방법)간단하게 Scanner와 System.out.print()에 대해 잘 알고 있다면 이번 심화문제는 손 쉽게 풀 수 있다.그리고 BufferedReader와 StringTokenizer를 이용하여 풀 수도 있다. ▷ 정수 Scanner 및 출력Scanner sc = new Scanner(System.in);int num = sc.nextInt();System.out.print(2-num+" "); ▷ 정수 BufferedReader 및 StringTokenizerBufferedReader br = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st..

[백준] 25083번 새싹 코드 (Java 자바)

예제 출력과 같은 그림을 출력하는 문제이다.접근 방법)간단하게 System.out.println()을 이용하여 쉽게 풀 수 있다.하지만 몇 가지 주의해야 할 점이 있다.' 과 " 과 \는 그대로 출력되지 않기 때문이다. 이를 해결하기 위해 이 3가지를 출력하기 위해 앞에 \를 추가적으로 붙여야 한다. ▷ '  " \ 출력방법System.out.println("\'\"\\");출력결과'"\ 꼭 이 3가지 문자는 앞에 \를 붙여야 문자가 출력된다는 점을 잊지 말도록 하자.정답 코드 1)import java.util.Scanner;class Main{ public static void main(String[] args){ System.out.println(" ,r\'\"7");..

[백준] 11718번 그대로 출력하기 코드 (Java 자바)

예제 입력 값을 그대로 똑같이 출력하는 문제이다.접근 방법)Scanner의 nextLine()를 이용하면 한 줄씩 입력을 받을 수 있다. 이것을 이용하여 한 줄씩 받고 출력하여 다음 줄에 더 이상 입력값이 없을 때까지 반복해야 한다.while문을 이용하여 한 줄 입력값을 받고 출력하는 실행문을 만들 수 있다. 하지만 조건문을 어떻게 작성해야 하는가..Scanner의 인스턴스.hasNext()를 이용하여 다음 입력 값 여부에 따라 true 또는 false 값을 갖게 된다.아래 예제를 보면서 참고해 보자. ▷ 다음 입력 값이 없을 때까지 Scanner sc = new Scanner(System.in);while(sc.hasNext()){ String str = sc.nextLine(); Syste..

[백준] 5622번 다이얼 풀이 코드 (Java 자바)

다이얼을 걸기 위한 최소 시간을 구하는 문제이다.접근 방법)각 대문자 알파벳에 해당하는 다이얼 번호가 있다. 조건문을 이용하여 알파벳을 입력받았을 때 그에 해당하는 다이얼 번호를 할당하고, 할당받은 다이얼 번호의 총합을 구하면 된다.먼저 입력값을 받은 후 알파벳을 하나씩 처리하기 위해 입력 값 길이 만큼 반복하는 for문과 charAt()을 이용하여 알파벳을 하나씩 뽑아낼 수 있다. 그 후 조건문을 생성하여 다이얼 번호 구한다. ▷ 알파벳 하나씩 조건문 넣기String str = "ABA"; int sum = 0; // 총 합 구하기(출력할 값) for(int i = 0; i = 'A' && (int)ch = 'D' && (int)ch  정답 코드 1)import java.uti..

반응형