algorithm/java 10

알고리즘을 위한 Java 입출력

Hackerrank에서 입출력 소스는 기본으로 제공해주다 보니 타기관 알고리즘 문제를 풀 때 입출력 처리를 못하는 문제가 발생했다. python에서는 input, c++에서는 cin으로 간편하게 처리 가능이지만, Java IO를 위해서는 Scanner, BufferedReader 객체를 사용해야 한다. 주로 Scanner를 많이 사용하지만 속도측면에서는 BufferedReader가 우수하다. Scanner, Sysout import java.util.Scanner; class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int a; String b; a = sc.nextInt(); sc.nextLine..

algorithm/java 2022.02.07

null pointer exception 예방하기

java.lang.NullPointerException (NPE) 발생원인: Runtime Exception으로 java말고도 대부분 개발언어에서 자주 발생한다. null 객체를 참조하였을 때 발생한다. 해당 주소를 찾아갔을 때 아무것도 없다는 의미이다. 방어코드: 1) return null 지양하기 null이 "데이터 없음"을 의미할 수 도 있지만 "failure"를 의미하는 경우도 있어 모호하므로 버그가 많이 발생하게 된다. 되도록이면 return null 은 사용하지 않기로 한다. 2) parameter로 null 넘기지 말기 1번과 같은 의미로 어떤 특별한 의미가 없다면 굳이 주지도 받지도 말자. 3) null check 하기 TestObject test = new TestObject(); Str..

algorithm/java 2021.07.11

java int와 Integer의 차이

java로 개발하다보면 Integer.valueOf(String); Integer.parseInt(String); Map(Integer, String); 처럼 int와 다른 Integer라는 type을 사용하는 걸 볼 수 있다. 이 둘이 어떤 차이가 있는지 알아보도록 하자. 1. int (Primitive 자료형) - '자료형' 을 의미한다. (int, float, long, double 와 같은 하나의 primitive 자료형을 의미) - '산술 연산'이 가능하다. - null로 초기화 불가능 (0으로만 초기화 가능) 2. Integer (Wrapper 클래스-객체) - Wrapper '클래스'를 의미한다. - Unboxing 을 하지 않으면 산술 연산이 불가능하지만, null값을 처리할 수 있다. -..

algorithm/java 2021.07.04

hackerrank/warm up/Repeated String

https://www.hackerrank.com/challenges/repeated-string/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=warmup java에서 문자열말고 문자는 "==" 으로 비교 가능하다. 문자 자체를 비교하기 때문인데, String.matches(), Character.compare() 메소드도 사용가능하다. import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java..

algorithm/java 2021.06.20

hackerranck/warm up/jumping on the clouds

https://www.hackerrank.com/challenges/jumping-on-the-clouds/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=warmup 최적화 문제인줄 걱정하지 말자. 잘 생각해보면 while문 하나로 끝낼 수 있다. import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.function.*; import java.util.regex.*; import ..

algorithm/java 2021.06.13

java 개발이 처음일 때 볼 수 있는 에러

1. unreported exception java.io.IOException; must be caught or declared to be thrown 자바로 개발하다보면 어떤 예외처리는 반드시 개발자가 처리하도록 강요되는데 그 중 하나가 IOException 이다. 사용하는 method가 throw IOException하는 경우인데 Caller에서 처리해주지 않아 발생하는 에러다. void Callee () throws java.io.IOException{ 해결방안 1) Caller에서 try catch문으로 에러를 잡아주도록 한다. try { Callee(); } catch(IOException e) { e.printStackTrace(); } 해결방안 2) Caller에서 받은 에러를 다시 또 th..

algorithm/java 2021.06.02

hackerrank/warm up/Counting Valleys

https://www.hackerrank.com/challenges/counting-valleys/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=warmup 등산가가 협곡을 몇개 지나가는지 알아보는 문제이다. (baseline = 0) string type을 list로 바꾸고 iterate 시키고 싶었는데 이 부분에서 List 타입이 좀 헷갈렸다. 여기서, ArrayList와 그냥 Array의 차이점이 무엇인지 짚고 넘어가자면, - List = interface - ArrayList = class 이라는데 이를 비교해보자. ArrayList List 이는 결국 같은 결과를 도출한다. 그러나 ..

algorithm/java 2021.05.23