■ 중기 목표: Java로 삼성 SW 테스트 A형 취득
기초 100제 C로 풀었던 입출력 문제를 다시 자바로 풀어 보았다.
codeup.kr/problemsetsol.php?psid=23
문제집 / 기초 100제
codeup.kr
주요했던 포인트
- % 출력
- 변수의 타입 / Scanner 클래스 사용 시 형 변환 이슈
- scanf -> Scanner 클래스 / next() 사용
- printf()
1006: 출력하기 06
public class codeup1006 {
public static void main(String[] args) {
System.out.print("%%");
// %%
System.out.println("%%");
// %%
System.out.printf("%%");
// %
}
}
1014: 문자 2개 입력받아 순서 바꿔 출력하기
: 자바는 next 함수에서 char 값을 바로 받을 수 없기 때문에 .charAt(0) 을 통해 변환해 주었다.
import java.util.Scanner;
public class codeup1014 {
public static void main(String[] args) {
char a, b;
Scanner scan = new Scanner(System.in);
a = scan.next().charAt(0);
b = scan.next().charAt(0);
System.out.printf("%c %c",b,a);
}
}
1015: 실수 입력받아 둘째 자리까지 출력하기
밑 자료 중 출력 / 서식 지정 확인
1018: 시간 입력받아 그대로 출력하기
여기에서 C랑 달라서 조금 애를 먹었다....... c는 진심 쉬운데. 그냥 scanf로 형식 지정해서 받으면 됨.
scanf처럼 형식을 지정하고 날짜를 받을 수 없기 때문에 일단 rawtime으로 입력되는 값을 전부 받은 다음, :를 이용해 자르도록 split 함수를 사용했다.
그리고 rawtime의 형이 String이기 때문에 %d로 출력할 수는 없어서 Integer.parseInt를 통해 형 변환 해 출력해 주었다.
솔직히 문제 푸는 것만 생각하면 굳이 형 변환을 해 줄 필요는 없었을 것 같지만, 나중에 DB에 넣을 때 문자열로 받아 두면 문제가 생길 수 있다는 점을 상기하려고 했다.
import java.util.Scanner;
public class codeup1018 {
public static void main(String[] args) {
String rawtime;
Scanner scan = new Scanner(System.in);
rawtime = scan.next();
String[] time = rawtime.split(":");
System.out.printf("%d:%d",
Integer.parseInt(time[0]), Integer.parseInt(time[1]));
}
}
더 나은 방법이 있을 것 같으니 고민해 보자!
1019: 연월일 입력받아 그대로 출력하기
여기서부터 약간 멘탈이 엥...이 되었는데, 사실 이 부분들은 겁나 빠르게 하고 넘길 줄 알았기 때문이다.
자꾸 arrayindexoutofboundsexception이 생겨서 일단 테스트로 time[0]만 출력해 봤는데, 똑같은 현상이 일어남.
무슨 일인가, 왜 배열에 담지 못하지? 하고 봤더니...
split 메서드는 .에서 동작하지 않는다는 점을 알게 되었다.
\\. / [.]을 사용하면 해결된다고 한다. 그래서 적용. 정답.
import java.util.Scanner;
public class codeup1019 {
public static void main(String[] args) {
String rawdate;
Scanner scan = new Scanner(System.in);
rawdate = scan.next();
String[] time = rawdate.split("[.]");
System.out.printf("%04d.%02d.%02d",
Integer.parseInt(time[0]),
Integer.parseInt(time[1]),
Integer.parseInt(time[2]));
}
}
1020: 주민번호 입력받아 형태 바꿔 출력하기
1018과 똑같이 풀이했는데, 테스트 케이스가 앞에 00을 넣는 경우였기 때문에 서식을 %06d%07d로 넣었다. (틀렸다는 이야기다. 머쓱.)
<참고했던 자료들>
1014-1015:
Scanner 클래스:
hyeonstorage.tistory.com/136
자바의 출력문-출력 / 서식 지정:
1018-1020:
split 함수 사용 관련 - 특정 문자 기준으로 문자열 자르기:
String to int, int to String
1019:
split은 . (온점)으로 되지 않는다!
Etc.
이클립스 IDE에서 syso 누르고 ctrl + space 누르면 System.out.println(); 나오는 거 왜 까먹었는지...
'자린고비 독학하기 > 자린고비 코딩하기' 카테고리의 다른 글
코딩 테스트 공부 시작 Java 03일 차 - Codeup 100제 (~1040) (0) | 2020.09.14 |
---|---|
코딩 테스트 공부 시작 Java 02일 차 - Codeup 100제 (~1030) (2) | 2020.09.11 |
코딩 테스트 공부 시작 - 커리큘럼 작성 (0) | 2020.09.10 |
Computer Science Studying Curriculum (0) | 2020.08.03 |
C 언어 코딩 도장 빨리 끝내기 - 9: 지역 변수, 전역 변수, 자동 변수 / 정적 변수, 정적 함수 / 레지스터 변수 (0) | 2020.03.29 |