코딩테스트-알고리즘/도전

2024.01.06 - 4문제

닉네임생각즁 2024. 1. 6. 09:29

 

배열 만들기 2

https://school.programmers.co.kr/learn/courses/30/lessons/181921

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.*;

class Solution {
    public int[] solution(int l, int r) {
        List<String> list = new ArrayList<>();
        for(int i=l; i<r+1; i++) {
            if (i % 5 == 0) {
                String num = String.valueOf(i);
                String[] numArray = num.split("");
                for(int j=0; j<numArray.length; j++) {
                    if(numArray[j].charAt(0) == '0' || numArray[j].charAt(0) == '5') {
                        if (j == numArray.length-1) {
                            list.add(num);
                        } else continue;
                    }
                    else break;            
                }
            }
        }
        
        int[] answer;
        if (list.isEmpty()) {
            answer = new int[]{-1}; 
        } else {
            answer = new int[list.size()];
            for(int i=0; i<list.size(); i++) {
                answer[i] = Integer.parseInt(list.get(i));   
            }    
        }
        return answer;
    }
}

복잡하다,,,,,,,,,,,,,

 

 

배열 만들기 3

https://school.programmers.co.kr/learn/courses/30/lessons/181895

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int[][] intervals) {
        List<Integer> list = new ArrayList<>();
        for(int i=intervals[0][0]; i<intervals[0][1]+1; i++) {
            list.add(arr[i]);
        }
        
        for(int i=intervals[1][0]; i<intervals[1][1]+1; i++) {
            list.add(arr[i]);
        }
        
        int[] answer = new int[list.size()];
        for(int i=0; i<list.size(); i++ ) {
            answer[i] = list.get(i);   
        }
        return answer;
    }
}

 

 

두 수의 합

https://school.programmers.co.kr/learn/courses/30/lessons/181846

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.math.BigInteger;

class Solution {
    public String solution(String a, String b) {
        BigInteger aa = new BigInteger(a);
        BigInteger bb = new BigInteger(b);
        BigInteger result = aa.add(bb);
        String answer = result.toString();
        return answer;
    }
}

 

처음에는 Integer.parseInt로 바꿔서 계산해주고 값에 ""을 더해서 String으로 만들면 된다는 가벼운 생각으로 접근했는데 int에 안 담기는 큰 값으로 인해 오류,,

이번에는 Double.pareseDouble로 해봤는데 String으로 바꾸니 소수점까지 따라옴 그래서 소수점버릴 수 있게 String.format을 쓰고어쩌고했는데 오류만 계속 남

찾아보니 매우 큰 정수를 표현하는 BigInteger 란게 있었다,,😵 

계산 방식도 달랐고 String으로 바꾸는 모양도 사아알짝 달랐다 알아야하는게 정말 많다 또 공부해야지,,

 

 

빈 배열에 추가, 삭제하기

https://school.programmers.co.kr/learn/courses/30/lessons/181860

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.*;

class Solution {
    public int[] solution(int[] arr, boolean[] flag) {
        List<Integer> result = new ArrayList<>();
        
        for(int i=0; i<flag.length; i++){
            if(flag[i]) {
                for(int j=0; j<arr[i]*2; j++) {
                    result.add(arr[i]);
                }
            } else {
                for(int j=0; j<arr[i]; j++) {
                    result.remove(result.size()-1);
                }
            }
        }
        
        int[] answer = new int[result.size()];
        for(int i=0; i<result.size(); i++) {
            answer[i] = result.get(i);
        }
        return answer;
    }
}

 

다른사람 풀이

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

        for (int i = 0; i < flag.length; i++) {
            if (flag[i]) {
                for (int j = 0; j < arr[i] * 2; j++) stack.push(arr[i]);
            } else {
                for (int j = 0; j < arr[i]; j++) stack.pop();
            }
        }

        return stack.stream().mapToInt(Integer::intValue).toArray();

원소가 뒤에 추가되고 뒤에서부터 삭제되는거라 나도 풀면서 스택이 떠올랐지만 아직 코드로 써본적은 없어서 안썼는데 이렇게 할 수 있었다!

넣는건 push, 빼는건 pop! stram 쓰는법도 얼른 익혀야겠다

 

 

 

'코딩테스트-알고리즘 > 도전' 카테고리의 다른 글

2024.01.08 - 18문제  (0) 2024.01.08
2024.01.07 - 10문제  (1) 2024.01.07
2024.01.05 - 5문제  (1) 2024.01.05
2023.12.31 - 5문제  (0) 2023.12.31
2023.12.30 - 10문제  (0) 2023.12.30