반응형

연습문제 : 햄버거 만들기 Lv.1

 

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

 

프로그래머스

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

programmers.co.kr

 

import java.util.Stack;

class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        Stack<Integer> s = new Stack<Integer>();

        for (int idx : ingredient) {
            s.push(idx);

            if (s.size() >= 4) {
                if (s.get(s.size() - 1) == 1 && s.get(s.size() - 2) == 3 && s.get(s.size() - 3) == 2 && s.get(s.size() - 4) == 1) {
                    answer++;
                    s.pop();
                    s.pop();
                    s.pop();
                    s.pop();
                }
            }
        }
        
        return answer;
    }
}
반응형

'알고리즘 > 프로그래머스' 카테고리의 다른 글

타겟 넘버  (0) 2024.03.23
구명보트  (0) 2024.03.23
크레인 인형뽑기 게임  (0) 2024.03.19
기사단원의 무기  (0) 2024.03.18
[1차] 비밀지도  (0) 2024.03.18
반응형

2019 카카오 개발자 겨울 인턴십 : 크레인 인형뽑기 게임 Lv.1

 

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

 

프로그래머스

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

programmers.co.kr

 

 

import java.util.*;

class Solution {
    public int solution(int[][] board, int[] moves) {
        int answer = 0;
        Stack<Integer> stack = new Stack<>();
        
        for(int i=0;i<moves.length;i++){
            int moveIdx = moves[i] - 1;
            
            for(int j=0;j<board.length;j++){
                int k = board[j][moveIdx];
            
                if(k == 0) continue;
                if(!stack.empty() && stack.peek() == k){
                    stack.pop();
                    answer += 2;
                } else {
                    stack.push(k);
                }
                
                board[j][moveIdx] = 0;
                break;
            }
        }
        
        return answer;
    }
}
반응형

'알고리즘 > 프로그래머스' 카테고리의 다른 글

구명보트  (0) 2024.03.23
햄버거 만들기  (0) 2024.03.20
기사단원의 무기  (0) 2024.03.18
[1차] 비밀지도  (0) 2024.03.18
대충 만든 자판  (0) 2024.03.14
반응형

연습문제 : 기사단원의 무기 Lv1

 

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

 

프로그래머스

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

programmers.co.kr

 

약수 개수 구하기 시간초과 피하기 문제로

1 ~ N 까지 전부 검증을 하는 방법 O(n) 이 아닌 √N지 구하는 방식으로 처리

class Solution {
    public int solution(int number, int limit, int power) {
        int answer = 0;
        int[] factors = new int[number+1];
        
        //  약수 개수 구하기
        for(int n = 1;n<=number;n++){
            int cnt = 0;

            for(int i=1;i * i <=n;i++){
                if(i * i == n) {
                    cnt++;
                } else if(n % i == 0) {
                    cnt += 2;
                }
            }

            factors[n] = cnt;
        }

        for(int i=1;i<=number;i++) {
            if(factors[i] > limit) answer += power;
            else answer += factors[i];
        }
        
        return answer;
    }
}

 

참고 : ※ https://chwan.tistory.com/entry/Java-%EC%95%BD%EC%88%98%EC%9D%98-%EA%B0%9C%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0

반응형

'알고리즘 > 프로그래머스' 카테고리의 다른 글

햄버거 만들기  (0) 2024.03.20
크레인 인형뽑기 게임  (0) 2024.03.19
[1차] 비밀지도  (0) 2024.03.18
대충 만든 자판  (0) 2024.03.14
체육복  (0) 2024.03.13
반응형

2018 KAKAO Blind recruitment > [1차] 비밀지도 Lv.1

 

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

 

프로그래머스

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

programmers.co.kr

 

// Integer.toBinaryString(arr[1], arr[2]) 함수 활용해서 다시 풀이 해봐야 하는 문제

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];

        String[][] map = new String[n][n];
        String[][] map2 = new String[n][n];

        for(int i=0;i<arr1.length;i++){
            int number = arr1[i];
            int number2 = arr2[i];
            int x = n-1;
            int x2 = n-1;

            while(x >= 0){
                if(number % 2 == 0) map[i][x] = " ";
                else map[i][x] = "#";

                number = number /2;
                x--;
            }


            while(x2 >= 0) {
                if(number2 % 2 == 0) {
                    map2[i][x2] = " ";
                } else {
                    map2[i][x2] = "#";
                }

                number2 = number2 / 2 ;
                x2--;
            }
        }
        
        for(int i=0;i<n;i++){
            answer[i] = "";

            for(int j=0;j<n;j++){
                if(map[i][j].equals("#") || map2[i][j].equals("#")){
                    answer[i] += "#";
                } else {
                    answer[i] += " ";
                }
            }
        }
        
        return answer;
    }
}

 

반응형

'알고리즘 > 프로그래머스' 카테고리의 다른 글

크레인 인형뽑기 게임  (0) 2024.03.19
기사단원의 무기  (0) 2024.03.18
대충 만든 자판  (0) 2024.03.14
체육복  (0) 2024.03.13
피로도  (1) 2024.03.11
반응형

 

대충 만든 자판 : Lv.1

 

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

 

프로그래머스

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

programmers.co.kr

 

풀이)

HashMap<Character, Integer> keyPad 에 문자 자판값을 key로, 클릭 최소 값을 설정

HashMap에 자판값이 설정되면 target 값을 해쉬맵을 통해 카운트 처리

 

import java.util.HashMap;

class Solution {
    public int[] solution(String[] keymap, String[] targets) {
        
        int[] answer = new int[targets.length];

        HashMap<Character, Integer> keyPad = new HashMap<>();

        for(int i=0;i<keymap.length;i++){
            for(int j=0;j<keymap[i].length();j++){
                char key = keymap[i].charAt(j);

                if(keyPad.containsKey(key)){
                    int idx = keyPad.get(key);
                    keyPad.put(key, Math.min(idx, j+1));
                } else {
                    keyPad.put(key, j+1);
                }
            }
        }

        for(int i=0;i<targets.length;i++){
            String targetKey = targets[i];
            int cnt =0;
            boolean hasKey = true;

            for(char curKey : targetKey.toCharArray()){
                if(keyPad.containsKey(curKey)){
                    cnt += keyPad.get(curKey);
                } else {
                    hasKey = false;
                    break;
                }
            }

            answer[i] = hasKey ? cnt : -1;
        }
        
        return answer;
    }
}

 

반응형

'알고리즘 > 프로그래머스' 카테고리의 다른 글

기사단원의 무기  (0) 2024.03.18
[1차] 비밀지도  (0) 2024.03.18
체육복  (0) 2024.03.13
피로도  (1) 2024.03.11
호텔 대실  (0) 2024.03.09

+ Recent posts