알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄
https://level.goorm.io/exam/43111/%ED%99%80%EC%A7%9D-%ED%8C%90%EB%B3%84/quiz/1
구름LEVEL
코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입니다. 기업에서 선호하는 C, C++, 파이썬(Python), 자바(Java), 자바스크립트(Javascript) 이
level.goorm.io
Think🤔
홀짝 판별하는 문제이다 홀수면 odd 짝수면 even을 출력하면 된다.
먼저 버퍼리더를 생성하고 값을 받아주는 input이 String 형태로 나와있다.
일단 먼저 input 값을 나누기 위해서는 숫자형으로 바꿔줄 필요가 있다.
int형으로 바꿔준 후 계산한다
Solution✍
import java.io.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
int numberInput = Integer.parseInt(input);
/*
if(numberInput % 2 == 0){
System.out.print("even");
}else{
System.out.print("odd");
}
*/
numberInput % 2 == 0 ? System.out.print("even") : System.out.print("odd");
}
}
첫번째 if else를 이용해서 성공적으로 제출했다.
그리고 다른 삼항 연산자를 이용해서 풀었는데 정답이 나오지 않았다.
? 부분에서 에러가 났기 때문
왜 에러가났을까?
중간에 : 문을 빼먹었기 때문... 근데 돌아가지 않는다 이클립스로 확인해본다.
그리고 readLine을 사용할때 throw Exception 해주지 않거나 try-catch로 예외를 처리하지 않으면 readLine() 메서드에 에러가 나는 이유를 확인해보았다.
import java.io.*;
import java.lang.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
int numberInput = Integer.parseInt(input);
String answer = (numberInput % 2) == 0 ? "even" : "odd";
System.out.print(answer);
br.close(); // 버퍼리더 닫아주기
}
}
작성했을때 in == null 이면 IOException을 던지는 구조이다.
아무것도 입력하지 않았을때 Reader가 프로그램에 인식하지 않고, 그러므로 예외처리를 던지기 때문이다.
그리고 리더로 작성하고 마지막에 닫을때는 close를 써주면 좋다.
close() 메소드를 명시 안해줘도 GC에 의해 내부객체들이 자동으로 정리된다.
하지만 GC에 의해서 자원이 정리되기 전에 연속/반복적으로 Buffereade가 close 되지 않고 사용되면
정상적으로 reading이 되지 않는다.
Review🤩
구름에서는 왜 처음에 BufferedReader를 사용할까?
일단 Scanner를 사용하면 띄어쓰기와 개행문자를 경계하여 입력 값을 인식하고 따로 가공할 필요가 없다.
그리고 더 많은 메소드를 지원해주고 , 사용하기가 버퍼리더보다 쉽지만 버퍼 사이즈가 1024char 이기 때문에
많은 입력이 필요하지 않는 경우에는 성능상 좋지 못한 결과를 불러온다.
import java.io.*;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(num % 2 == 0){
System.out.print("even");
}else{
System.out.print("odd");
}
sc.close();
}
}
스캐너를 이용한 방법
스캐너에 필요한 메서드들을 불러오기 위해서 import 했음.
'Algorithm' 카테고리의 다른 글
[구름] 약수 구하기 (0) | 2021.12.25 |
---|---|
[구름] 3과 5의 배수 (0) | 2021.12.25 |
[프로그래머스] 서울에서 김서방 찾기 (0) | 2021.12.12 |
[프로그래머스] [1차] 비밀지도 (0) | 2021.12.12 |
[프로그래머스] 문자열 다루기 기본 (0) | 2021.12.11 |