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

2024.01.11 - 4문제

닉네임생각즁 2024. 1. 11. 19:02

 

정수를 나선형으로 배치하기

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

 

프로그래머스

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

programmers.co.kr

class Solution {
    public int[][] solution(int n) {
        int[][] answer = new int[n][n];
        int[][] rule = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
        int index = 0; // rule 넘기는 index
        int value = 1; // 1 ~ n^2
        int i = 0; int j = 0;
        
        while(value <= n * n) {
            
            answer[i][j] = value;
            value++;
            
            int test_i = i + rule[index][0]; // 다음 예상되는 i
            int test_j = j + rule[index][1]; // 다음 예상되는 j
            
            if(test_i >= n || test_i < 0 || test_j >= n || test_j < 0 || answer[test_i][test_j] != 0) { 
                // 다음 넘어가기 전에 방향 바꿔야되는지 미리 확인해야함
                index++; // rule 넘어감
                if(index == 4) index = 0; // rule 배열 크기는 4라서 넘어가면 안됨
            } 
            
            // i, j 진짜 바꿔줌
            i = i + rule[index][0];
            j = j + rule[index][1];
            
        }
        
        return answer;
    }
}

 

 

전국 대회 선발 고사

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

 

프로그래머스

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

programmers.co.kr

import java.util.*;

class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        int answer = 0;
        List<Integer> list = new ArrayList<>();
        
        for(int i=0; i<rank.length; i++) {
            if(attendance[i]) {
                list.add(rank[i]);
            }
        }
        Collections.sort(list);
        
        int a=0;
        int b=0;
        int c=0;
        for(int i=0; i<rank.length; i++) {
            if(rank[i] == list.get(0)) a = i;
            else if(rank[i] == list.get(1)) b = i;
            else if(rank[i] == list.get(2)) c = i;
        }
        
        
        answer = 10000 * a + 100 * b + c;        
        
        return answer;
    }
}

 

 

커피 심부름

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

 

프로그래머스

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

programmers.co.kr

class Solution {
    public int solution(String[] order) {
        int answer = 0;
        
        for(String s : order) {
            if(s.contains("americano")) {
                answer += 4500;
            } else if (s.contains("cafelatte")) {
                answer += 5000;
            } else if(s.equals("anything")) {
                answer += 4500;
            }
        }
        
        
        return answer;
    }
}

 

 

 

조건에 맞게 수열 변환하기 2

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

 

프로그래머스

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

programmers.co.kr

class Solution {
    public String[] solution(String[] picture, int k) {
        String[] answer = new String[picture.length * k];
        int count = 0;
        String change = "";
        
        for(int n=0; n<answer.length; n+=k) { 
            for(int i=0; i<picture[0].length(); i++) {
                for(int j=0; j<k; j++) {
                    change += picture[count].charAt(i);
                }
            }
            answer[n] = change;
            count++;
            
            for(int i=0; i<k; i++) {
                answer[n+i] = answer[n];                
            }
            
            change = "";
        }
        return answer;
    }
}

 

 

 

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

완 😎  (0) 2024.01.12
2024.01.12 - 1문제  (0) 2024.01.12
2024.01.10 - 1문제  (0) 2024.01.10
2024.01.09 - 9문제  (0) 2024.01.09
2024.01.08 - 18문제  (0) 2024.01.08