05-05 15:28
Notice
Recent Posts
Recent Comments
«   2025/05   »
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
Archives
Today
Total
관리 메뉴

(주) 망나니 힘집

[해커랭크] 코딩테스트 문제 시도 [Stdin and Stdout II] [10 포인트] 본문

스펙도 쌓니/코테 막푸니

[해커랭크] 코딩테스트 문제 시도 [Stdin and Stdout II] [10 포인트]

군포망나니 2024. 11. 5. 22:49

[해커랭크] 코딩테스트 문제 시도 [nn번] [해결 =? O/X]

"풀이" 가 아닌 "시도" 를 추구합니다.

 

풀이 환경  

 

언어 버전 : Java8 

사용 패키지 : x    

문제 요약   

 

정수, 소수, 문자열을 입력받아서 출력하기  
 
나의 코드 및 나의 해설 

 

import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i = scan.nextInt();

        // Write your code here.
        String s = scan.nextLine();
        Double d = scan.nextDouble();

        System.out.println("String: " + s);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
}

 

이렇게 적었다. 하지만 

 

String 이 출력이 안 된다. 하... 또 왜... 

로그를 찍어봤다. 

import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i = scan.nextInt();

        // Write your code here.
         Double d = scan.nextDouble();    
         System.out.println(scan.nextLine()); 
         String s = scan.nextLine(); 
         scan.close();
        
        System.out.println("String: " + s);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
}

 

잘 된다. 

import java.util.Scanner;

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i = scan.nextInt();

        // Write your code here.
         Double d = scan.nextDouble();    
         scan.nextLine();
         String s = scan.nextLine(); 
         scan.close();
        
        System.out.println("String: " + s);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
}

 

humm... 통과 

 

nextLine 은 공백을 넣을 수 있지만 엔터도 공백으로 인식하여 입력을 안해도 자동으로 넘긴다. 

 

흠.. 그니까 지금 정수 넣고 소수 넣고 문자열 넣을라 했는데 중간에 문자열 대신 공백이 들어간 거다.

그래서 공백 제거가 필요하다. 그니까 지금 내가 3.1415 를 입력했고 엔터 쳐서 3.1415\n 이다. 근데 next() 는 개행문자 전까지만 가져오니까 3.1415 만 가져오게 되고 문자열 넣을라니까 버퍼에 \n 남아있어 이게 문자열로 들어가는 것이다. 

 

그러니 제거가 필요하다.  

 

 

문제 해답 풀이와 비교  

 

다 똑같아서 생략 

 

시간복잡도 및 공간복잡도 비교 

 

 

 

놓친 부분과 배운 개념

 

Scanner 를 안 써서 자꾸자꾸 헷갈리는데 돌아버리겠다.  

하다보면 되겠지 뭐 ~ 

일하다가 느낀건데 남의 코드 보면서 내가 계속 반복해서 써 먹는 게 실력 가장 많이 오르더라 ~.~