프로그래머스 알고리즘 (자바)

마동찬·2023년 4월 7일
0

문자열을 정수로! Integer.parseInt()

class Solution {
    public int solution(String s) {
        int answer = 0;
        
        answer = Integer.parseInt(s);
        
        return answer;
    }
} 

정수배열에 포함 되있는것 찾기 (+찾은값더하기)
IntStream.of(arr).anyMatch(x -> x == i)

int sum = 0;
        for (int i=0; i<=9; i++) {
            int j = i;

            if (!IntStream.of(numbers).anyMatch(x -> x == j)) {
                sum += j;
            }
        }
        
        
        return sum;

String.valueOf()

  • "null"이라는 문자열로 처리

  • 파라미터가 null이면 문자열 "null"을 만들어서 반환한다-> 항상 String 형태로 출력

        char[] arr = phone_number.toCharArray();
        
        String arr2 = String.valueOf(arr);


이런 차이 때문에 valueOf은 "null".equals(string) 형태로 다시 한번 체크를 해야한다. 또한, null로 인해 발생된 에러는 시간이 지나고 디버깅하기 어렵다는 문제가 있다. 그래서 NPE(Null PointerException)를 방지해야하는 경우에서는 String.valueOf()를 사용하는 것이 좋다.

Arrays.sort(?);

int[] arra = answer.stream().mapToInt(Integer::intValue).toArray();
        Arrays.sort(arra);

list배열을 int배열로 바꾸는 법과 배열오름차순을 몰랐다.
stream().sorted라는 메서를 사용했지만 그대로 였다. 그 이유는 list에서 사용하는 메서드였기 때문이었다.
그래서 stream().mapToInt라는 메서드를 사용하여 먼저 int배열로 바꾼후,
그 int배열변수를 Arrays.sort(여기)에 넣어야 된다는 것을 알게됬다.

문자열에서 숫자 체크하기(유니코드)

문자배열로 변환하여 하나하나 for문으로 체크하려했더니 비교가 안 되서 힘들었다. 하지만 쉬운 방법이 있었다.

유니코드 문자48은 숫자0, 57은 숫자9이다.
문자열을 char[]로 바꾼후
c >= 48 && c<=57 로 체크하면 정말 쉬웠다.

문자열 비교 ==과 equals의 차이점

문자열 비교를 해도 결과값이 다르지 않아 혼동하던중 자바 강의에서 들었던 equals가 문득 생각났다.
==은 비교하고자하는 대상의 주소값을 비교하는 '연산자'이다
equals()는 객체! 내용 자체만을 비교한다.
까먹지 말고 다시 보자.

listArray를 String으로 하는법

구글링으로 처음 보는 메서드를 발견했다!
String.join("",listArray)
문자열로 변환하는데 각각 간격도 정할 수 있는 매우 유용한 메서드같다!

profile
새내기개발자 성장기록

0개의 댓글