본문 바로가기

자린고비 독학하기/자린고비 코딩하기

코딩 테스트 공부 시작 Java 01일 차 - Codeup 100제 (~1020)

반응형

■ 중기 목표: 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 

maktooob.tistory.com/17

자바의 출력문-출력 / 서식 지정:

keep-cool.tistory.com/15

1018-1020:

split 함수 사용 관련 - 특정 문자 기준으로 문자열 자르기:

all-record.tistory.com/118

String to int, int to String

nota.tistory.com/49

1019:

split은 . (온점)으로 되지 않는다!

its-easy.tistory.com/11

 

Etc.

이클립스 IDE에서 syso 누르고 ctrl + space 누르면  System.out.println(); 나오는 거 왜 까먹었는지... 

 

반응형