반응형

백준 브론즈 48

[백준] 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..

[백준] 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..

[백준] 2908번 상수 풀이 코드 (Java 자바)

문자열을 뒤집고 두 수의 크기 비교하는 문제이다.접근 방법)우선 문자열을 뒤집기 위해서 몇 가지 방법이 존재한다. for문을 이용하여 문자를 하나씩 위치를 거꾸로 배치하는 방법과 StringBuilder 클래스를 이용하는 방법이다.for문을 이용하여 문자열을 뒤집는 방법도 괜찮지만 StringBuilder 클래스의 주요 메소드를 이용하면 문제를 굉장히 쉽게 풀어낼 수 있다. 그렇기 때문에 StringBuilder 클래스와 주요 메소드를 알지 못했다면 이번 기회에 알아놓자. ▷ StringBuilder 클래스와 주요 메소드를 이용한 문자열 뒤집기 StringBuilder는 문자열에서 문자를 삽입, 붙이기, 제거, 뒤집기등 여러 가지 기능을 할 수 있는 클래스이다.우리가 사용할 메소드는 reverse()와 ..

[백준] 1152번 단어의 개수 풀이 코드 (Java 자바)

띄어쓰기로 구분되어 있는 단어의 개수를 출력하는 문제이다.접근 방법)StringTokenizer클래스를 이용하면 문자열 분리와 관련된 코드를 쉽게 작성할 수 있다.이 클래스를 이용하여 띄어쓰기를 기준으로 문자열을 분리하고 countTokens() 함수를 이용해 분리된 토큰수를 출력하면 된다.  ▷ StringTokenizer클래스를 이용한 문자열 분리 StringTokenizer는 문자열을 구분자를 사용하여 분리할 때 자주 사용된다.(스페이스, 공백, 콤마를 기준으로 문자열 분리에 사용) String Tokenizer에 관한 자세한 내용은 아래 페이지를 통해 알아보자. [ Java 자바 ] StringTokenizer 클래스를 이용한 문자열 분리!StringTokenizer클래스는 많이 들어본 클래스 이..

[백준] 2675번 문자열 반복 풀이 코드 (Java 자바)

두 번째 줄부터 왼쪽 정수 숫자만큼 오른쪽 문자열의 각 문자를 반복하여 출력하는 문제이다.상당히 쉬운문제에 속하여 for문을 조금만 이용한다면 쉽게 풀 수 있다.접근 방법)첫째 줄에 테스트 케이스의 개수를 입력 받아, 그 수 만큼 반복하도록 for문을 생성한다.그 다음 둘째 줄 부터 정수(R)와 문자열(S)을 각 각 입력 받고 문자열 길이 만큼 반복하는 for문을 생성한다.마지막으로 그 for문안에서 문자를 하나씩 R만큼 반복하여 출력하는 코드를 작성하면 올바른 출력 결과가 만들어진다.  ▷ 문자열 각 문자마다 반복 출력하기 총 for문을 3번 이용하여 각 문자를 반복 출력할 수 있다.s.charAt()을 사용하여 문자를 출력하고 2번째 for문 밖에서 System.out.println()을 입력하여 다..

[백준] 10809번 알파벳 찾기 풀이 코드 (Java 자바)

a~z 기본 출력값이 -1인 상황에서 예제 입력한 문자열의 각 알파벳이 별로 처음 등장한 위치를 -1에서 바꿔주는 문제이다.접근 방법)처음으로 26 크기를 가진 배열을 생성한 후 모든 배열 값을 -1로 설정한다.그리고 입력 값을 받아와 입력 값 길이만큼 반복하는 for문을 만든 다음 char를 이용하여 알파벳을 하나씩 뽑는다.하나씩 뽑은 알파벳이 26크기를 가진 배열에서 몇 번째 배열에 위치하는지 알기 위해서 아스키코드를 사용한다.그리고 해당 배열에 위치한 알파벳이 입력값에서 처음 등장한 위치가 얼마인지 바꿔준다.  ▷ 입력값에서 알파벳 처음 등장한 위치 찾기 str.charAt(i)을 그대로 사용하여 출력하게 되면 아스키코드 값이 출력된다.a의 아스키코드 값은 97이므로 (int)ch - 97로 코드를..

반응형