[스터디] Java 프로그래머스 기초 24문제 & 머쓱이 획득 (25.02.18)

2025. 2. 18. 14:27·LG 유플러스 유레카 SW/스터디

1. qr code

class Solution {
    public String solution(int q, int r, String code) {
        String answer = "";
        for(int i=0;i<code.length();i++){
            
            if(i%q==r){
                answer+=code.charAt(i);
            }
        }
        
        return answer;
    }
}

2. 수열과 구간 쿼리 4

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        for(int[] q:queries){
            int s=q[0];
            int e=q[1];
            int k=q[2];
            for(int i=s;i<=e;i++){
                if(i%k==0){
                    arr[i]++;
                }   
            }
           
        }
        return arr;
    }
}

3. 특수문자 출력하기

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {

        System.out.println("!@#$%^&*(\\'\"<>?:;");

    }

}

4. 배열 만들기 6

import java.util.*;
class Solution {
    public int[] solution(int[] arr) {
        ArrayList<Integer> stk=new  ArrayList();
        for(int i=0;i<arr.length;i++){
            if(stk.isEmpty()){
                stk.add(arr[i]);
                
            }else if(stk.get(stk.size()-1)==arr[i]){
                //stk는 리스트라 charAt()못쓰고 get으로
                //0부터 시작이니까 size()-1
                 stk.remove(stk.size() - 1);
                //add<>remove
                
            }else{
                stk.add(arr[i]);
                
            }
        }
         if (stk.isEmpty()) {
            return new int[] {-1};
        }
        
        // ArrayList<Integer>를 int[]로 변환
        int[] answer = new int[stk.size()];
        for (int j = 0; j < stk.size(); j++) {
            answer[j] = stk.get(j);
        }
        
        return answer;
        
    }
}

5. 왼쪽 오른쪽

import java.util.*;

class Solution {
    public String[] solution(String[] str_list) {
        String[] str=new String[0];
        for (int i = 0; i < str_list.length; i++) {

            if ("l".equals(str_list[i])) {
                return Arrays.copyOfRange(str_list, 0, i);
            } else if ("r".equals(str_list[i])) {
                return Arrays.copyOfRange(str_list, i + 1, str_list.length);
            }
        }

        return str;
    }
}

6. 문자 개수 세기

class Solution {
    public int[] solution(String my_string) {
    int[] count = new int[52]; // A-Z (26개) + a-z (26개)
        
        for (char c : my_string.toCharArray()) {
            if (Character.isUpperCase(c)) { // 대문자 처리
                count[c - 'A'] += 1;
            } else if (Character.isLowerCase(c)) { // 소문자 처리
                count[c - 'a' + 26] += 1;
            }
        }

        return count;
    }
}

7. 배열 만들기 4

import java.util.*;
class Solution {
    public int[] solution(int[] arr) {
        ArrayList<Integer> stk=new  ArrayList();
        for(int i=0;i<arr.length;i++){
            if(stk.isEmpty()){
                stk.add(arr[i]);
                
            }else if(stk.get(stk.size()-1)==arr[i]){
                //stk는 리스트라 charAt()못쓰고 get으로
                //0부터 시작이니까 size()-1
                 stk.remove(stk.size() - 1);
                //add<>remove
                
            }else{
                stk.add(arr[i]);
                
            }
        }
         if (stk.isEmpty()) {
            return new int[] {-1};
        }
        
        // ArrayList<Integer>를 int[]로 변환
        int[] answer = new int[stk.size()];
        for (int j = 0; j < stk.size(); j++) {
            answer[j] = stk.get(j);
        }
        
        return answer;
        
    }
}

8. 두 수의 합

import java.math.BigInteger;
class Solution {
    public String solution(String a, String b) {
        BigInteger num1 = new BigInteger(a);
        BigInteger num2 = new BigInteger(b); //Integer.parseInt로 하기에는 너무 큰 숫자를 계산 할 수 없으므로 BigInteger 사용
        BigInteger sum = num1.add(num2); //BigInterger끼리 더할때는 add메서드 사용

        return sum.toString();
    }
}

9. 문자열 여러 번 뒤집기

class Solution {
    public String solution(String my_string, int[][] queries) {
        // 1. 문자열을 char 배열로 변환: 문자열은 불변이라 수정하기 어렵기 때문에.
        char[] arr = my_string.toCharArray();

        // 2. queries 처리
        for (int[] query : queries) {
            int s = query[0];  // 시작 인덱스
            int e = query[1];  // 끝 인덱스

            // 3. 해당 범위 [s, e]를 뒤집기
            while (s < e) {
                // s, e 위치의 값을 교환
                char temp = arr[s];
                arr[s] = arr[e];
                arr[e] = temp;

                // 인덱스 갱신
                s++;
                e--;
            }
        }

        // 4. 배열을 다시 문자열로 변환하여 반환
        return new String(arr);
    }
}

10. 조건 문자열

class Solution {
    public int solution(String ineq, String eq, int n, int m) {
        int answer = 0;
        
        if(ineq.equals(">")&&eq.equals("=")){
            return n >= m?1:0;
        }else if(ineq.equals("<")&&eq.equals("=")){
            return n <= m?1:0;
        }else if(ineq.equals(">")&&eq.equals("!")){
            return n > m ? 1: 0;
        }else if(ineq.equals("<")&&eq.equals("!")){
            return n < m ? 1: 0;
        }
        return 0;
    }
}

11. 무작위로 K개의 수 뽑기

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int k) {
        int[] answer = new int[k];
        Arrays.fill(answer, -1); // -1로 채우기

        Set<Integer> set = new LinkedHashSet<>();
        for (int num : arr) set.add(num);

        int i = 0;
        for (int num : set) {
            if (i == k) break;
            answer[i++] = num;
        }
        return answer;
    }
}

12. 수열과 구간 쿼리 2

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int[] answer = new int[queries.length];
       
        for (int i = 0; i < queries.length; i++) {
            int s = queries[i][0], e = queries[i][1], k = queries[i][2];
            
            int min = -1; 
            for (int j = s; j <= e; j++) {
                if (arr[j] > k) {
                    if (min == -1 || arr[j] < min) {
                        min = arr[j];
                    }
                }
            }
            answer[i] = min;
        }
        return answer;
    }
}

13. 정사각형으로 만들기

class Solution {
    public int[][] solution(int[][] arr) {
        int rows = arr.length;
        int cols = arr[0].length; 
        
        if (rows > cols) {
            for (int i = 0; i < rows; i++) {
                int[] newRow = new int[rows];
                System.arraycopy(arr[i], 0, newRow, 0, cols);
// System.arraycopy(원본 배열, 복사할 항목의 시작 인덱스, 새 배열, 새 배열에서 붙여 넣을 시작 인덱스, 복사 개수) 
                arr[i] = newRow;
            }
        } else if (cols > rows) {
            int[][] newArr = new int[cols][cols];
            for (int i = 0; i < rows; i++) {
                System.arraycopy(arr[i], 0, newArr[i], 0, cols);
            }
            arr = newArr;
        }
        
        return arr;
    }
}

14. 그림 확대

import java.util.Arrays;

class Solution {
    public String[] solution(String[] picture, int k) {
        int rows = picture.length;
        int cols = picture[0].length();
        String[] answer = new String[rows * k]; 
        
        for (int i = 0; i < rows; i++) {
            StringBuilder bigRow = new StringBuilder();
            for (int j = 0; j < cols; j++) {
                char c = picture[i].charAt(j); 
                bigRow.append(String.valueOf(c).repeat(k));
            }
            Arrays.fill(answer, i * k, (i + 1) * k, bigRow.toString()); 
            // answer 배열의 i * k부터 (i + 1) * k까지 bigRow로 채움  
        }
        return answer;
    }
}

15. 문자열 겹쳐쓰기

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        return my_string.substring(0, s) + overwrite_string + my_string.substring(s + overwrite_string.length(), my_string.length());
    }
}

16. a와 b 출력하기

import java.util.Scanner;

public class Solution {
    static StringBuilder sb = new StringBuilder();
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        
        sb.append("a = ").append(a).append("\n").append("b = ").append(b);
        System.out.println(sb);
    }
}

17. 전국 대회 선발 고사

import java.util.stream.IntStream;
import java.util.Arrays;

class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        int answer = 0;
        int[] trueRank = IntStream.range(0, rank.length)
                    .filter(i -> attendance[i])
                    .map(i -> rank[i])
                    .toArray();
        
        Arrays.sort(trueRank);
       
        for(int i = 0; i < rank.length; i++) {
            if(rank[i] == trueRank[0]) answer += i * 10000;
            else if(rank[i] == trueRank[1]) answer += i * 100;
            else if(rank[i] == trueRank[2]) answer += i;
        }
        return answer;
    }
}

18. 대소문자 바꿔서 출력하기

import java.util.Scanner;
import java.util.Arrays;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String answer = "";
        
        for(String alpha: a.split("")) {
            if(alpha.equals(alpha.toUpperCase())) {
                answer += alpha.toLowerCase();
            } else {
                answer += alpha.toUpperCase();
            }
        } 
        
        System.out.println(answer);
    }
}

19. 코드 처리하기

class Solution {
    public String solution(String code) {
        String ret = "";
        String[] cArray = code.split("");
        boolean mode = false;
        
        for(int i = 0; i < code.length(); i++) {
            if(cArray[i].equals("1")) {
                mode = !mode;
            } else {
                if(!mode && i % 2 == 0) {
                    ret += cArray[i];
                } else if(mode && i % 2 != 0) {
                    ret += cArray[i];
                }
            }
        }
        
        return ret.equals("") ? "EMPTY" : ret;
    }
}

20. 배열 만들기 2

import java.util.stream.IntStream;

class Solution {
    public int[] solution(int l, int r) {
        int[] answer = IntStream.range(l, r + 1)
            .filter(i -> Integer.toString(i).matches("[50]+"))
            .toArray();
        
        return answer.length == 0 ? new int[]{-1} : answer;
        
    }
}

21. 배열 조각하기

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr, int[] query) {
        for(int i = 0; i < query.length; i++) {
            if(i % 2 == 0) {
                arr = Arrays.copyOfRange(arr, 0, query[i] + 1);
            } else {
                arr = Arrays.copyOfRange(arr, query[i], arr.length);
            }
        }
        
        return arr;
    }
}

22. 문자열 출력하기

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        
        System.out.println(a);
    }
}

23. 주사위 게임 3

import java.util.*;

class Solution {
    public int solution(int a, int b, int c, int d) {

        int[] arr = {a, b, c, d};
        Arrays.sort(arr);
        
        if(a == b && b == c && c == d) {
            return 1111 * a;
        } else if (arr[0] == arr[2]) {
            return (int)Math.pow(10 * arr[0] + arr[3], 2);
        } else if (arr[1] == arr[3]) {
            return (int)Math.pow(10 * arr[3] + arr[0], 2);
        } else if (arr[0] == arr[1] && arr[2] == arr[3]) {
            return (arr[0] + arr[2]) * Math.abs(arr[0] - arr[2]);
        } else if (arr[0] == arr[1]) {
            return arr[2] * arr[3];
        } else if (arr[1] == arr[2]) {
            return arr[0] * arr[3];
        } else if (arr[2] == arr[3]) {
            return arr[0] * arr[1];
        } else {
            return arr[0];
        }
    }
}

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

  • while문 안에 for문을 배치하여 ➡️, ⬇️, ⬅️, ⬆️ 방향으로 풀었는데 자꾸 index 범위 오류나서.. 포기 ㅠㅠ
  • 그래서 다른 사람이 푼 문제를 보고 이해를 했다.. 아직 갈 길이 멀다..
class Solution {
    public int[][] solution(int n) {
        int[][] answer = new int[n][n]; // 정답 배열
        
        // 방향: 오른쪽(→), 아래(↓), 왼쪽(←), 위쪽(↑)
        int[] dx = {0, 1, 0, -1};
        int[] dy = {1, 0, -1, 0};
        
        int x = 0, y = 0, dir = 0; // 초기 위치 및 방향
        for (int num = 1; num <= n * n; num++) {
            answer[x][y] = num; // 현재 위치에 숫자 삽입
            
            // 다음 이동 위치
            int nx = x + dx[dir];
            int ny = y + dy[dir];
            
            // 범위를 벗어나거나 이미 숫자가 채워진 경우 방향 전환
            if (nx < 0 || nx >= n || ny < 0 || ny >= n || answer[nx][ny] != 0) {
                dir = (dir + 1) % 4; // 방향 변경
                nx = x + dx[dir];
                ny = y + dy[dir];
            }
            
            x = nx;
            y = ny;
        }
        
        return answer;
    }
}

 

🎉 머쓱이 스탬프 획득 !!!

728x90
반응형

'LG 유플러스 유레카 SW > 스터디' 카테고리의 다른 글

[스터디] Java 도전 문제 3문제 (25.02.20)  (0) 2025.02.20
[스터디] Java 프로그래머스 PCCE 기출 14문제 (25.02.19)  (1) 2025.02.19
[스터디] Java 프로그래머스 기초 30문제 (25.02.17)  (0) 2025.02.17
[스터디] Java 프로그래머스 기초 30문제 (25.02.14)  (1) 2025.02.14
[스터디] Java 프로그래머스 기초 40문제 (25.02.13)  (1) 2025.02.13
'LG 유플러스 유레카 SW/스터디' 카테고리의 다른 글
  • [스터디] Java 도전 문제 3문제 (25.02.20)
  • [스터디] Java 프로그래머스 PCCE 기출 14문제 (25.02.19)
  • [스터디] Java 프로그래머스 기초 30문제 (25.02.17)
  • [스터디] Java 프로그래머스 기초 30문제 (25.02.14)
nueos
nueos
  • nueos
    nueos 공부 기록
    nueos
  • 전체
    오늘
    어제
    • 분류 전체보기 (191)
      • 해커톤 (1)
      • 네이버 BoostCamp (6)
      • LG 유플러스 유레카 SW (3)
        • React (21)
        • TypeScript (2)
        • JavaScript (2)
        • HTML+CSS (5)
        • Spring (7)
        • Java (6)
        • SQL (2)
        • Algorithm (8)
        • CX (6)
        • Git (2)
        • 프로젝트 (2)
        • 스터디 (9)
        • 과제 (8)
        • 특강 (1)
      • React (3)
      • Next (0)
      • Javascript (2)
      • HTML (2)
      • CSS (9)
      • Algorithm (6)
      • Database (0)
      • OS (13)
      • C++ (24)
      • Python (1)
      • jQuery (1)
      • Django (1)
      • Git (1)
      • 개발 지식 (3)
      • 정보 보안 (22)
      • 포렌식 (1)
      • 암호 (2)
      • 기타 (4)
      • 패스트캠퍼스 FE 프로젝트십 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Queue
    스택
    완전 탐색
    제주지역혁신플랫폼지능형서비스사업단
    제주해커톤
    Stack
    힙
    기술로바꾸는세상
    heap
    디지털혁신
    exhaustive search
    큐
    디지랩챌린지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
nueos
[스터디] Java 프로그래머스 기초 24문제 & 머쓱이 획득 (25.02.18)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.