코테 준비 9일차_8/17

Jieun·2026년 8월 17일

코딩테스트 준비

목록 보기
2/8
post-thumbnail
  1. 콜라츠 수열 만들기
    홀수일때 계산, 짝수일 때 계산 나눠서 계산 진행하게 두면 될듯
    결과가 1이 될때까지 실행하는 조건 만드는 방법을 몰랐음
  • 제출한 정답
import java.util.ArrayList;
import java.util.List;
class Solution {
    public int[] solution(int n) {
        List<Integer> list = new ArrayList<>();
        while (true) {
            list.add(n);
            if(n==1) {
                break;
            }
            if(n %2 ==0) {
                n = n /2;
            } else {
                n = 3*n+1;
            }
        }
        return list.stream().mapToInt(i -> i).toArray();
    }
}
  • 풀이
    동적으로 배열의 크기가 늘어나는 ArrayList로 배열을 만들고
    while문으로 결과가 1일때까지 반복하도록 설정
    결과를 ArrayList로 변환해서 나오게 설정
  1. 배열 만들기4
  • 초기 코드
class Solution {
    public int[] solution(int[] arr) {
        int[arr_length] stk = arr_length;
        for(int i=0;i<arr_length;i++) {
            if(stk.isEmpty) {
                stk[i] = arr[i];
                
            } else{
                if(srk[i] < arr[i]) {
                   stk[i] = arr[i]; 
                } else{
                    stk[i].remove;
                }
            }
        }
        return stk;
    }
}

ArrayList로 list만들고, while문으로 조건에 맞게 구현하면 됨

  • 제출 코드
import java.util.ArrayList;
import java.util.List;

class Solution {
    public int[] solution(int[] arr) {
        List<Integer> stk = new ArrayList<>();
        int i = 0;
        
        while (i < arr.length) {
            if (stk.isEmpty()) {
                stk.add(arr[i]);
                i++;
            } 
            else if (stk.get(stk.size() - 1) < arr[i]) {
                stk.add(arr[i]);
                i++;
            } 
            else {
                stk.remove(stk.size() - 1);
            }
        }
        
        return stk.stream().mapToInt(val -> val).toArray();
    }
}
  • 다른 정답
import java.util.Stack;

class Solution {
    public int[] solution(int[] arr) {

        Stack<Integer> stack = new Stack<>();

        for (int num : arr) {
            while (!stack.isEmpty() && num <= stack.peek())
                stack.pop();
            stack.push(num);
        }

        return stack.stream().mapToInt(i -> i).toArray();
    }
}

stack이용해서 문제 해결도 가능

  1. 간단한 논리 연산
    1&2 비교하고 3&4 비교해서 각 연산 비교해서 결과 출력하는 방향으로 구현하면 될듯
  • 초기 코드
class Solution {
    public boolean solution(boolean x1, boolean x2, boolean x3, boolean x4) {
        boolean answer = true;
        boolean answer1 = true;
        boolean answer2 = true;

        
        if(x1 || x2 ) {
            answer1 = true;
        } else {
            answer1 = false;
        } 
        if(x3 || x4 )
            answer2 = true;
        } else {
        answer 2 = false;
    }
    if(answer1  && answer2) {
        answer = true;
    } else {
        answer = false;
    }
        return answer;
    }
}
  • 제출 코드
class Solution {
    public boolean solution(boolean x1, boolean x2, boolean x3, boolean x4) {
        return (x1 || x2) && (x3 || x4);
    }
}

괄호 두 개((x1 ∨ x2), (x3 ∨ x4))를 각각 계산한 뒤에 둘을 &&로 묶어주면 됨

profile
비전공자의 백엔드 생존기: 어제보다 1% 더 성장하기

0개의 댓글