항해 알고리즘 테스트 내가 짠 코드

Ada·2022년 9월 29일
0

항해TOL

목록 보기
11/63

1번 문제

- 0~9까지의 숫자 중 배열에 없는 두 숫자 사이의 모든 숫자의 합 구하기

import java.util.ArrayList;
import java.util.stream.IntStream;
public class RealTest {
    public int solution(int[] arr1) {
        int answer = 0;
        ArrayList<Integer> list = new ArrayList<>();
        for(int i = 0; i <= 9; i++){
            int finalI = i; // 람다식은 final 변수 지정 필요
            if(!IntStream.of(arr1).anyMatch(x->x == finalI)){
                list.add(i);
            }
        }
        if(list.get(0) < list.get(1)){
            for(int i = list.get(0); i<= list.get(1); i++){
                answer += i;
            }
        }else{
            for(int i = list.get(1); i<= list.get(0); i++){
                answer += i;
            }
        }
        return answer;
    }

    public static void main(String[] args) {
        RealTest method = new RealTest();
        int[] arr1 = {1,3,5,9,2,4,8,0};
        System.out.println(method.solution(arr1));
    }
}

프로그래머스 문제랑 너무나도 비슷해서 좋았는데 자세히 보니 응용할 부분이 있었다.... 뭔가 두가지 문제를 섞어놓은듯한 느낌?

Stream은 쓸수록 신기하고 유용한 것 같다. anyMatch는 알고만 있었고 써보진 못했었는데 이번 기회에 사용하게 되어서 기분 좋다.
람다식에는 final 변수만 사용할 수 있다는 것도 처음 알게되었다.


2번 문제

- 짝수번째 인덱스의 알파벳은 대문자로, 홀수번째 인덱스의 알파벳은 소문자로 바꾸기

public class RealTest2 {
    public String solution(String s) {
        String answer = "";
        //s.replace(" ", "");
        String[] strArr = s.split("");
        int idx = 0;
        for(int i=0; i<s.length(); i++){
            if(strArr[i].equals(" ")) {
                strArr[i] = " ";
            }
            else if(idx %2 == 0){
                strArr[i] = strArr[i].toUpperCase();
                idx ++;
            }
            else {
                strArr[i] = strArr[i].toLowerCase();
                idx++;
            }
            answer += strArr[i];
        }
        return answer;
    }


    public static void main(String[] args) {
        RealTest2 method = new RealTest2();
        String s ="hang hae ninety nine";
        System.out.println(method.solution(s));
    }
}

2번 문제는 공백을 어떻게 처리하느냐가 관건이였던 것 같다. 마찬가지로 프로그래머스의 문제와 비슷했는데 공백 처리부분만 달랐다.

공백을 아예 없애버렸다가 출력할때 필요한 걸 뒤늦게 깨닫고 다시 살려냈다.

생각보다 간단히 풀어낸 문제같다.

profile
백엔드 프로그래머

0개의 댓글