두두의 메모

[백준] 2557, 1000, 1001, 10998, 1008, 10869, 10926, 18108, 10430, 2588 - JAVA 본문

코딩테스트

[백준] 2557, 1000, 1001, 10998, 1008, 10869, 10926, 18108, 10430, 2588 - JAVA

두두(DoDu) 2023. 7. 18. 21:57
반응형

웹에 대해 아무것도 모르던 신입 때, 회사에서 살아남기 위해 스프링 웹 개발만 하다가 이제야 살짝의 여유(?)가 생겼다.

여유라기 보다는 이제 나를 위한 공부를 할 수 있는 시간이 생긴 것 같다랄까?

돌이켜보니 내가 자바에 대해 얼마나 잘 알고  좋은 알고리즘을 짤 수 있을까란 생각이 들었다.

그래서 짬짬히 코딩테스트를 하면서 공부해 나가려고 한다.

 

그리고 기록용에 가까우니 좋은 예시 코드를 보고싶다면 다른 블로그를 참고해도 좋다.

(예전 코드보면 더 좋은 방법이 있었는데 왜 이렇게 짰지?라는 생각이 드는 것처럼  이 기록을 통해 어떻게 풀었나 한번 보기 위해서랄까?ㅋㅋ)

 

 

1. 2557번 - Hello World

스프링부트 코드에 익숙해있어서 그런지 psvm를 선언해야하는지 몰랐다.

혹시나 싶어서 클래스 생성 후 psvm까지 해주니 통과됐다.

public class Main {
	public static void main(String[] args) {
		System.out.println("Hello World!");
	}
}

 

2. 1000번 - A+B

import java.util.*;

public class test01 {
    public static void main(String[] args){
        int A = 0;
        int B = 0;

        Scanner sc = new Scanner(System.in);
        A = sc.nextInt();
        B = sc.nextInt();

        System.out.println(A+B);
    }
}

 

3. 1001번 - A-B

import java.util.Scanner;

public class Main {
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);

        int A = sc.nextInt();
        int B = sc.nextInt();

        System.out.println(A-B);
    }
}

 

4. 10998 - AxB

import java.util.Scanner;

public class Main {
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);

        int A = sc.nextInt();
        int B = sc.nextInt();

        System.out.println(A*B);
    }
}

 

5.  1008 - A/B

import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
 
		Scanner in=new Scanner(System.in);
		
		double a=in.nextDouble();
		double b=in.nextDouble();
		
		in.close();
		System.out.print(a/b);
 
	}
}

 

Scanner을 이용해서 사용자로부터 입력을 받는 방법이 있고,

BufferedReader을 이용한 방법도 있다. 

 

좋은 블로그 글 : https://st-lab.tistory.com/41

 

JAVA [자바] - 입력 뜯어보기 [Scanner, InputStream, BufferedReader]

이 글을 지금 이 시점에 써야 할까 고민을 많이 했다. 사실 자바를 그냥 다룰 줄만 아는 것에 목표를 둔다면 이 글이 무의미할 수도 있다. 그러나 자바에 대해 조금이라도 관심이 있고 더 배우고

st-lab.tistory.com

 

6. 10869 - 사칙연산

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);

        int A = sc.nextInt();
        int B = sc.nextInt();

        System.out.println(A+B);
        System.out.println(A-B);
        System.out.println(A*B);
        System.out.println(A/B);
        System.out.println(A%B);
    }
}

 

7. 10926 - ??!

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;

public class Main {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String lastString = "??!";

        String str = br.readLine();
        System.out.println(str + lastString);
    }

 

8. 18108 - 1998년생인 내가 태국에서는 2541년생?!

① Scanner 사용

import java.io.IOException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);

        int num = sc.nextInt();
        System.out.println(num-543);
    }
}

② BufferedReader 사용

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str = br.readLine();
        int year = Integer.parseInt(str);
        System.out.println(year - 543);
    }
}

 

9. 10430 - 나머지

① Scanner 사용

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
       Scanner sc = new Scanner(System.in);

       int A = sc.nextInt();
       int B = sc.nextInt();
       int C = sc.nextInt();

       System.out.println((A+B)%C);
       System.out.println(((A%C) + (B%C))%C);
       System.out.println((A*B)%C);
       System.out.println(((A%C) * (B%C))%C);
    }
}

② BufferedReader 사용

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
 
public class Main {
 
	public static void main(String[] args) throws IOException {
        
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
 		String str = br.readLine();
		StringTokenizer st = new StringTokenizer(str," ");
		int A = Integer.parseInt(st.nextToken());
		int B = Integer.parseInt(st.nextToken());
		int C = Integer.parseInt(st.nextToken());
        
		System.out.println( (A+B)%C );
		System.out.println( (A%C + B%C)%C );
		System.out.println( (A*B)%C );
		System.out.println( (A%C * B%C)%C );
	
	}
}

 

10. 2588 - 곱셈

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int A = Integer.parseInt(br.readLine());
        String B = br.readLine();
        char[] C = B.toCharArray();

        System.out.println(A *(C[2]-'0'));
        System.out.println(A *(C[1]-'0'));
        System.out.println(A *(C[0]-'0'));

        System.out.println(A * Integer.parseInt(B));

    }
}

이 문제의 핵심은 두 번째로 입력받은 수를 하나하나씩 쪼개는 방법과 숫자로 된 문자를 산술 연산을 수행하기 위해 정수 값으로 변환할 수 있는지 이다.

 

1. 472 x 5

22 472 x 8

3. 472 x 3

4. 472 x 385

 

필자는 br.readLine()을 통해서 문자열을 입력받음과 동시에 char[] c 배열에 초기화 시켰다.

 

 

또한 C[2] - '0'에서 - '0'을 입력한 이유는 아래와 같다.

 

ex) B에 입력 값으로 "123"이 주어진다고 가정해보자.

- 문자열 "123"을 문자 배열 b로 변환하면 다음과 같다 : ['1', '2', '3']- 이제 문자를 직접적으로 산술 연산에 사용하려고 하면 문자의 유니코드 값을 얻게 된다.- 유니코드에서 문자 '0'은 값 48을 가지고, '1'은 값 49, 그리고 '9'는 값 57이다.- 따라서 문자를 정수로 변환하지 않고 (b[2] - '0')는 (b[2] - 48)과 같다는 것이 된다.- 즉, (b[2] - '0')는 ('3' - '0')과 같으며, 이는 유니코드 값 51 - 48을 계산하여 3이 된다.

 

 

반응형

'코딩테스트' 카테고리의 다른 글

[백준] 2753번 윤년  (0) 2023.08.15
[백준] 1330번 두 수 비교하기 - JAVA  (1) 2023.07.19
[백준] 10172번 개 - JAVA  (1) 2023.07.19
[백준] 10171번 고양이 - JAVA  (0) 2023.07.19
[백준] 11382번 꼬마정민 - JAVA  (0) 2023.07.18
Comments