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

2024.01.05 - 5문제

닉네임생각즁 2024. 1. 5. 06:43

 

31일이 지나고 도전이 끝나니까 긴장이 풀려서 더 진행이 안되고있었다

그래서 🍊씨와 나머지 남은 문제를 걸고 다시 도전하기로 했다ㅋㅋㅋㅋㅋㅋ 다음주 목요일까지를 목표로!!!!!! 이번엔 꼭 성공해야지 가보자고👊👊

 


 

ad 제거하기

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

 

프로그래머스

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

programmers.co.kr

import java.util.*;

class Solution {
    public String[] solution(String[] strArr) {
    
        List<String> result = new ArrayList<>();
        for(String str : strArr) {
            if(str.contains("ad")) continue;
            else {
                result.add(str);
            }
        }
        
        String[] answer = result.toArray(new String[0]);
        return answer;
    }
}

 

 

문자열 잘라서 정렬하기

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

 

프로그래머스

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

programmers.co.kr

 

틀린 코드

주의할 점!

import java.util.Arrays;

class Solution {
    public String[] solution(String myString) {
        String[] answer = myString.split("x");
        Arrays.sort(answer);
        return answer;
    }
}

 

쉽게 생각했는데 더 꼼꼼했어야 했다 문제랑 조건 잘 보는거 중요!!!!!!!!!!!

단, 빈 문자열은 반환할 배열에 넣지 않습니다.

라는 말이 있다 문제에서 보여준 테스트코드는 위에 쓴 코드로 다 통과되지만 함정이 있었다

예를 들어 xabb, xabx, aabx 등 맨앞 또는 맨뒤에 x가 있을 경우 빈 문자열이 들어간 인덱스가 있는 것이다 그래서 빈 문자열인지 아닌지 확인하고 넣는 작업이 필요함!!!!

 

최종 코드

import java.util.*;

class Solution {
    public String[] solution(String myString) {
        String[] answer = myString.split("x");
        
        List<String> result = new ArrayList<>();
        for(String a : answer) {
            if (a.isEmpty()) continue;
            else result.add(a);
        }
        
        answer = result.toArray(new String[0]);
        Arrays.sort(answer);
        return answer;
    }
}

 

 

간단한 식 계산하기

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

 

프로그래머스

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

programmers.co.kr

class Solution {
    public int solution(String binomial) {
        int answer = 0;
        
        String[] math = binomial.split(" ");
        if (math[1].equals("+")) {
            answer = Integer.parseInt(math[0]) + Integer.parseInt(math[2]);
        } else if (math[1].equals("-")) {
            answer = Integer.parseInt(math[0]) - Integer.parseInt(math[2]);
        } else if (math[1].equals("*")) {
            answer = Integer.parseInt(math[0]) * Integer.parseInt(math[2]);
        }
        
        return answer;
    }
}

 

 

세로 읽기

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

 

프로그래머스

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

programmers.co.kr

class Solution {
    public String solution(String my_string, int m, int c) {
        String answer = "";
        
        for(int i=c-1;i<my_string.length();i+=m) {
            if(i>my_string.length()-1) break;
            else answer+=my_string.charAt(i);
        }
        
        return answer;
    }
}

 

 

 

배열의 길이를 2의 거듭제곱으로 만들기

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

 

프로그래머스

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

programmers.co.kr

 

더보기

 

부끄러운 코드라 숨겼다,,

 

import java.util.*;

class Solution {
    public int[] solution(int[] arr) {
       
        int n = arr.length;
        List<Integer> result = new ArrayList<>();
        for(int i:arr) {
            result.add(i);
        }
        
        for(int i=0; i<10; i++) {
            if(n == Math.pow(2, i)) {
                break;
            } else if (n == 1 || n == 3) {
                result.add(0);
                break;
            } else if (4 < n && n < 8) {
                while(n<8) {
                    result.add(0);
                    n++;
                }
                break;
            } else if (8 < n && n < 16) {
                while(n<16) {
                    result.add(0);
                    n++;
                }
                break;
            } else if (16 < n && n < 32) {
                while(n<32) {
                    result.add(0);
                    n++;
                }
                break;
            } else if (32 < n && n < 64) {
                while(n<64) {
                    result.add(0);
                    n++;
                }
                break;
            } else if (64 < n && n < 128) {
                while(n<128) {
                    result.add(0);
                    n++;
                }
                break;
            } else if (128 < n && n < 256) {
                while(n<256) {
                    result.add(0);
                    n++;
                }
                break;
                
            } else if (256 < n && n < 512) {
                while(n<512) {
                    result.add(0);
                    n++;
                }
                break;
            } else if (512 < n && n < 1024) {
                while(n<1024) {
                    result.add(0);
                    n++;
                }
                break;
            }
        }    
                    
        int[] answer = new int[result.size()];
        for (int i = 0 ; i < result.size() ; i++) {
            answer[i] = result.get(i).intValue();        
        }
        return answer;
    }
}

 

 

통과하고도 이게 통과라고,,,,,,,,,,,,,,,? 했던 코드😨😨

당연히 이렇게 풀면 안된다 어떻게 쉽게 풀어야할지 안떠올라서 구구절절 적으며 푼거였는데,, 배열길이가 1000아허고 제곱근 조건이라 다 펼쳐가며 써도 코드가 막 엄청 길지 않았고, 시간초과가 날 만한 조건이 아니라 통과한거같다 다행이면서도 창피하다

 

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

2024.01.07 - 10문제  (1) 2024.01.07
2024.01.06 - 4문제  (1) 2024.01.06
2023.12.31 - 5문제  (0) 2023.12.31
2023.12.30 - 10문제  (0) 2023.12.30
2023.12.27 - 15문제  (0) 2023.12.27