일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- mybatis update 오류
- allowMultiQueries
- 8393 합
- 문자 9086
- 백준
- 백준 문자
- 백준 개수 세기
- Gabia
- 넥사크로
- 백준 9086
- 백준 영수증
- 자바
- nexacro
- 배열 최대 최소
- 지도 이미지
- 백준 25314
- update 오류
- 2739 구구단
- 백준 사분면
- 2753 윤년
- 1330 두 수 비교하기
- 백준10172
- 배열 최대값 최소값
- 25304 영수증
- 10172 개
- tomcat9
- 자바 최대 최소
- 톰캣9
- 9498 시험성적
- 백준10171
- Today
- Total
두두의 메모
[백준] 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 |