[Java, Kotlin] equals, HashCode
·
JVM/Kotlin
What's equals()? In default code in Object.java, equals() is defined as follows: public boolean equals(Object obj) { return (this == obj); } What's hashcode()? In the same Object.java class, hashcode() is defined as a native function. public native int hashcode(); Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util..
[Java, Kotlin] equals, ==, === 비교
·
JVM/Kotlin
Java 든 Kotlin 이든 문자열(String)은 reference 타입이다. Summary 구분 Java Kotlin == (Structural Equality) primitive: 값 비교 reference: (주소) 값 비교 primitive: 값 비교 reference: 참조하여 값 비교 .equals() reference 를 참조하여 값 비교 == 과 동일 === (Referential Eqaulity) X primitive: 값 비교 reference: (주소) 값 비교 주의할 점 1. 코틀린은 사실 primitive type 이 없다. 간단한 정수값을 할당한 변수에도 .toInt, toBoolean() 등 메소드 사용할 수 있는 이유가 여기있다. In Kotlin, everything i..
[Programmers] 124 나라의 숫자
·
Algorithm/Algorithm (문제풀이)
🔒 문제 💡 생각의 흐름 1,2,4 3개의 숫자만으로 한 자리씩 표현 총 자릿수는 3^N + 3^N-1 + 3^N-2 .... 3^0 => N+1 의 문자열 길이를 갖는다. 군 내에서 N번째 숫자를 3^N * n + 3^N-1 * n ... N+1 만큼 loop을 돌고 n을 이어붙이면 된다고 생각했다. 먼저, 10진수 -> 124나라의 숫자가 바로 생각나지 않으니 124나라의 숫자 -> 10진수변환을 곱씹어 보았다. 예를들면 10진수 '241' 3^2 * 2 + 3^1 * 4 + 3^0 * 1 >[0단계] 3마다 단위가 바뀌는 걸로 봐서 3진법!!!!!?!?!?! 근데 숫자 0과 4를 따로 처리해야겠네? [1단계] 124나라의 숫자의 길이 == 3^1 + 3^2 + 3^3 + .... 3의 제곱수의 누적..
[Programmers] 네트워크
·
Algorithm/Algorithm (문제풀이)
문제 문제 이해하기 여타 다른 문제와 입력값이 좀 다른데 다른 문제는 보통 graph matrix를 제시하고 1,0으로 vertex가 존재하는지 존재하지 않는지를 표현한다면 이 문제는 adjacecy matrix를 아예 입력값으로 제시한다. 때문에 다음과 같이 해석했다. (0)번 노드 기준 (1)번 노드 기준 (2)번 노드는 아무런 노드와도 연결되지 않았다. (2번 행 또는 열에서 자기 자신을 제외한 모든 원소 0) (3)번 노드 기준 따라서 위와 같은 4*4 인접 행렬이 주어졌을때 return 값 (그래프 수)는 2가된다. 해결 방법 방문 여부를 keep하는 visited[]행렬 대신 BFS로 방문하며 방문했던 노드의 자리를 0값으로 대치하여 모든 행렬의 원소가 0이될 때까지 BFS의 호출 수를 증가시..
[Java] 입출력 스트림
·
JVM/Java
Java Stream 이란 입/출력 데이터 흐름의 통로 입력 스트림은 소스 데이터로부터 데이터를 읽어들이고 출력 스트림은 목적 대상까지 데이터를 흘려보내 쓴다. Java Stream 특징 Queue , FIFO(First In First Out) 방식 Byte 단위로 흐른다. 입출력 대상에 따라 나뉜다. FileStream -> 파일 ByteArrayStream -> 메모리 (byte 배열) PipeStream -> 프로세스 Input/OutputStream InputStream 은 read() , OutputStream 은 write() 추상 메소드를 기본적으로 구현하게 되어있다. FileInput/Ouput Stream은 모두 In/Output Stream의 자식 abstract method read..
자바 정규식을 활용한 패스워드 정책설정 예제
·
JVM/Java
🎯 Goal 자바에서 기본적으로 제공하는 util 을 사용해서 비밀번호에 흔히 쓰이는 영문 + 숫자 + 특수문자 조합 정규식을 작성해본다. (커닝페이퍼로 가져다 쓰세요!) 1. 정규식을 통한 패턴 지정 String passwordPolicy = "((?=.*[a-z])(?=.*[0-9])(?=.*[^a-zA-Z0-9]).{8,})"; //소문자, 0~9 숫자, 특수문자 8자리 이상! 2. 패스워드 패턴화 import java.util.regex.Matcher; import java.util.regex.Pattern; Pattern pattern_pwd = Pattern.compile(passwordPolicy); Matcher matcher_pwd = pattern_pwd.matcher(userPassw..