본문 바로가기

반응형

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

 

프로그래머스

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

programmers.co.kr

class Solution {
    public int countOne(int num){
        int count = 0;
        String deci = Integer.toBinaryString(num);
        for(int i = 0; i < deci.length(); i++){
            if(deci.charAt(i) == '1') count++;
        }
        
        return count;
    }
    
    public int solution(int n) {
        int answer = 0;
        int nsOne = countOne(n);
        int m = n;
        
        while(answer < n){
            m++;
            int msOne = countOne(m);
            if(nsOne == msOne) answer = m;
        }
        
        return answer;
    }
}

 

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

 

프로그래머스

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

programmers.co.kr

import java.util.Stack;

class Solution {
    public int solution(String s) {
        Stack<Character> stack = new Stack<>();

        for (char c : s.toCharArray()) {
            if (!stack.isEmpty() && stack.peek() == c) {
            	stack.pop();
            } else {
            	stack.push(c);
            }
        }

        return stack.isEmpty() ? 1 : 0;
    }
}

순서대로 마지막 Stack과 비교하고 다르면 넣고 같으면 빼며 마지막에 Stack의 길이를 재서 말끔히 지웠는지 체크합니다.

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

 

프로그래머스

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

programmers.co.kr

import java.util.List;
import java.util.ArrayList;

class Solution {
    public int[] solution(int brown, int yellow) {
        int[] answer = new int[2];

        List<Integer[]> array = new ArrayList<>();
        for(int i = 1; i <= brown+yellow; i++){
            if((brown+yellow)%i == 0 && i >= (brown+yellow)/i){
                Integer[] by = {i, (brown+yellow)/i};
                array.add(by);
            }
        }

        for(Integer[] a : array){
            if(2*a[0]+2*a[1]-4 == brown){
                answer[0] = a[0];
                answer[1] = a[1];
                break;
            }
        }

        return answer;
    }
}

 

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

 

프로그래머스

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

programmers.co.kr

class Solution {
    public int[] solution(int n, String[] words) {
        int[] answer = new int[2];
        int chk = 0;
        
        for(int i = 0; i < words.length; i++){
            boolean chkB = true;
            
            if(i > 0) {
                chkB = chkWord(words, words[i], i);
            }
            
            if(!chkB){
                chk = i+1;
                break;
            }
            
            if(i > 0 && words[i].charAt(0) != words[i-1].charAt(words[i-1].length()-1)){
                chk = i+1;
                break;
            }
        }
        
        if(chk == 0){
            answer[0] = 0;
            answer[1] = 0;
        } else if(chk%n == 0){
            answer[0] = n;
            answer[1] = chk/n;
        } else {
            answer[0] = chk%n;
            answer[1] = chk/n + 1;
        }

        return answer;
    }
    
    public boolean chkWord(String[] array, String word, int index){
        for(int i = 0; i < index; i++){
            if(word.equals(array[i])){
                return false;
            }
        }
        
        return true;
    }
}

 

후기

.toCharArray()를 보며 느낀 점은 문서 작업도 단축키를 알아야 쉽고 빠르게 작업이 가능하듯이, 코딩도 그와 같다는 생각이 들었습니다. 저런 메소드를 몰라도 저와 같이 코딩할 수는 있겠지만 메소드 하나 앎으로써 시야가 달라짐을 느꼈습니다.
이와 같은 메소드를 당장 내 것으로 만들지는 못하더라도 계속해서 노출시켜 익힘으로써 결국에는 내 것으로 만들겠다고 다짐했습니다.

새로운 시야를 밝혀준 유익한 시간이 됐습니다!
반응형
댓글