[스터디] Java 프로그래머스 기초 30문제 (25.02.17)

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

1. 두 수의 연산값 비교하기

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

        String n1 = a + "" + b;
        int n2 = 2 * a * b;
        
        return Integer.parseInt(n1) > n2 ? Integer.parseInt(n1) : n2;
    }
}

2. 문자열로 변환

class Solution {
    public String solution(int n) {
        String answer = "";
        return answer + n;
    }
}

3. flag에 따라 다른 값 반환하기

class Solution {
    public int solution(int a, int b, boolean flag) {
        return flag ? a + b : a - b;
    }
}

4. 공배수

class Solution {
    public int solution(int number, int n, int m) {
        return number % n == 0 && number % m == 0 ? 1: 0;
    }
}

5. 배열 만들기 (3)

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr, int[][] intervals) {
        
        int[] arr1 = Arrays.copyOfRange(arr, intervals[0][0], intervals[0][1] + 1);
        int[] arr2 = Arrays.copyOfRange(arr, intervals[1][0], intervals[1][1] + 1);
        
        int[] answer = new int[arr1.length + arr2.length];
        
        for(int i = 0; i < arr1.length; i++) answer[i] = arr1[i];
        int j = 0;
        for(int i = arr1.length; i < answer.length; i++) answer[i] = arr2[j++];
        
        return answer;
    }
}

6. 문자열 잘라서 정렬하기

import java.util.*;

class Solution {
    public ArrayList<String> solution(String myString) {
        
        ArrayList<String> answer = new ArrayList<>();
        String[] str = myString.split("x");
        
        for(String s:str) 
            if(!s.isEmpty()) answer.add(s);
        
        Collections.sort(answer);
        return answer;
    }
}

7. ad 제거하기

import java.util.*;

public class Solution {
    public String[] solution(String[] strArr) {
        
        ArrayList<String> str = new ArrayList<>();
        
        
        for (String s : strArr) {
            if (!s.contains("ad")) {  
                str.add(s);
            }
        }
        
       
        String[] answer=str.toArray(new String[str.size()]); // 배열 크기를 자동으로 조정하는 메커니즘 동작
        return answer;

    }
}

8. 세로 읽기

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){
            answer+=my_string.charAt(i);
        }
        
        return answer;
    }
}

9. 날짜 비교하기

public class Solution {
    public int solution(int[] date1, int[] date2) {
        
        if (date1[0] < date2[0]) {
            return 1;  
        } else if (date1[0] > date2[0]) {
            return 0;  
        } else {
            if (date1[1] < date2[1]) {
                return 1; 
            } else if (date1[1] > date2[1]) {
                return 0; 
            } else {
                if (date1[2] < date2[2]) {
                    return 1;  
                } else {
                    return 0; 
                }
            }
        }
    }
}

10. 수열과 구간 쿼리 1

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

11. 글자 지우기

public class Solution {
    public String solution(String my_string, int[] indices) {
        
        String answer = "";

       
        for (int i = 0; i < my_string.length(); i++) {
            
            int a = 0;
            for (int x : indices) {
                if (x == i) {
                    a=1;
                    break;
                }
            }
            if (a==0) {
                answer += my_string.charAt(i);
            }
        }

        return answer;
    }
}

12. 등차수열의 특정한 항만 더하기

class Solution {
    public int solution(int a, int d, boolean[] included) {
        int answer = 0;
        
        for(int i=0;i<included.length;i++){
            int x=a+i*d;
            
            if(included[i]==true){
                answer+=x;
            }
        }
        
        return answer;
    }
}

13. 문자열 섞기

class Solution {
    public String solution(String str1, String str2) {
        String answer = "";
        for(int i=0;i<str1.length();i++){
            answer+=str1.charAt(i);
            answer+=str2.charAt(i);
            
        }
        return answer;
    }
}

14. 이차원 배열 대각선 순회하기

class Solution {
    public int solution(int[][] board, int k) {
        int answer = 0;
        for(int i=0;i<board.length;i++){
            for(int j=0;j<board[i].length;j++){
                if(i+j<=k){
                    answer+=board[i][j];
                }
            }
        }
        return answer;
    }
}

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

class Solution {
    public int[] solution(int[] arr) {
        int length = 1;        
        while(length < arr.length) length *= 2;

        int[] answer = new int[length];

        for(int i = 0 ; i < arr.length ; i++) {
            answer[i] = arr[i];
        }
        return answer;
    }
}

16. 문자열이 몇 번 등장하는지 세기

class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        int strLength = myString.split("").length;
        int patLength = pat.split("").length;
        
        for(int i = 0 ; i < strLength - patLength + 1 ; i++) {
            if(myString.substring(i, i + patLength).equals(pat))  {
                answer++;
            }
        }
        return answer;
    }
}

17. 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

class Solution {
    public String solution(String myString, String pat) {
        String answer = "0";
        int strLength = myString.split("").length; 
        int patLength = pat.split("").length;
        
        for(int i = strLength; i >= patLength ; i--) {
            if(myString.substring(i - patLength, i ).equals(pat))  {
                answer = myString.substring(0, i);
                break;
            }
        }
        
        // String answer = "";
        // int idx = myString.lastIndexOf(pat);
        // answer = myString.substring(0, idx) + pat;
        // return answer;
        
        return answer;
    }
}

18. 1로 만들기

class Solution {
    public int solution(int[] num_list) {
        int answer = 0;
            
        for(int num : num_list) {
            int cnt = 0;
            while(num > 1) {
                cnt++;
                num /= 2;
            }
            answer += cnt;
        }
        return answer;
    }
}

19. 문자열 뒤집기

class Solution {
    public String solution(String my_string, int s, int e) {
        StringBuffer str = new StringBuffer(my_string.substring(s,e+1));
        return my_string.substring(0,s) + str.reverse().toString() + my_string.substring(e+1);
    }
}

20. 배열 만들기 5

import java.util.ArrayList;

class Solution {
    public ArrayList<Integer> solution(String[] intStrs, int k, int s, int l) {
        ArrayList<Integer> answer = new ArrayList<>();
        for(String str : intStrs) {
            int num = Integer.parseInt(str.substring(s, s+l));
            if(num > k) answer.add(num);
        }
        return answer;
    }
}

21. 수열과 구간 쿼리 3

class Solution {
    public int[] solution(int[] arr, int[][] queries) {        
        for (int[] query : queries) {
            int i = query[0], j = query[1];
            int temp = arr[i]; 
            arr[i] = arr[j];
            arr[j] = temp;
        }
        return arr;
    }
}

22. 빈 배열에 추가, 삭제하기

import java.util.ArrayList;

class Solution {
    public int[] solution(int[] arr, boolean[] flag) {
        String str = "";
        
        for(int i = 0 ; i < flag.length ; i++) {
            if(flag[i]) {
                str += (arr[i] + "").repeat(arr[i] * 2);
            } else {
                str = str.substring(0, str.length() - arr[i]);
            }
        }   
        
        int[] answer = new int[str.length()];
        
        for(int i = 0 ; i < answer.length ; i++) {
            answer[i] = Integer.parseInt(str.split("")[i]);
        }
        
        return answer;
    }
}

23. 문자열 묶기

import java.util.Arrays;

class Solution {
    public int solution(String[] strArr) {
        int[] answer = new int[strArr.length];
      
        for(String s : strArr) {
            answer[s.length() -1]++;
        }

        return Arrays.stream(answer).max().getAsInt(); // getAsInt()로 실제 값 추출
    }
}

24. 세 개의 구분자

import java.util.Arrays;

class Solution {
    public String[] solution(String myStr) {
        String[] result = Arrays.stream(myStr.split("[abc]"))
            .filter(s -> !s.isEmpty())
            .toArray(String[]::new); // Stream<String>을 String[] 배열로 변환하기 위한 메서드 참조 방식의 타입 지정
        
        return result.length != 0 ? result : new String[]{"EMPTY"};
    }
}

25. 2의 영역

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

class Solution {
    public int[] solution(int[] arr) {
        int[] indexes = IntStream.range(0, arr.length) // Python의 range와 비슷한 역할
           .filter(i -> arr[i] == 2) // 인덱스 뽑기
           .toArray();
        
        return indexes.length != 0 ? Arrays.copyOfRange(arr, indexes[0], indexes[indexes.length - 1] + 1): new int[]{-1};
    }
}

26. 리스트 자르기

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

class Solution {
    public int[] solution(int n, int[] slicer, int[] num_list) {
int a = slicer[0], b = slicer[1], c = slicer[2];
        int[] answer = {};

        if (n == 1) {
            answer = Arrays.copyOfRange(num_list, 0, b + 1);
        } else if (n == 2) {
            answer = Arrays.copyOfRange(num_list, a, num_list.length);
        } else if (n == 3) {
            answer = Arrays.copyOfRange(num_list, a, b + 1);
        } else if (n == 4) {
            answer = IntStream.range(a, b + 1)
                    .filter(i -> (i - a) % c == 0) // 간격에 해당하는 인덱스 뽑기
                    .map(i -> num_list[i])
                    .toArray();
        }

        return answer;
    }
}

27. 간단한 논리 연산

class Solution {
    public boolean solution(boolean x1, boolean x2, boolean x3, boolean x4) {
        return (x1 || x2) && (x3 || x4);
    }
}

28. 문자열 반복해서 출력하기

import java.util.Scanner;

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

29. 커피 심부름

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

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

import java.util.Arrays;

public class Solution {
    public int solution(int[] arr) {
        int[] previousArr;
        int x = 0;
        
        while (true) {
             previousArr = Arrays.copyOf(arr, arr.length);

            for (int i = 0; i < arr.length; i++) {
                if (arr[i] >= 50 && arr[i] % 2 == 0) {
                    arr[i] /= 2; 
                } else if (arr[i] < 50 && arr[i] % 2 != 0) {
                    arr[i] = arr[i] * 2 + 1;
                }
            }

            if (Arrays.equals(previousArr, arr)) {
                break;
            }
            x++;
        }

        return x;
    }
}
728x90
반응형

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

[스터디] Java 도전 문제 3문제 (25.02.20)  (0) 2025.02.20
[스터디] Java 프로그래머스 PCCE 기출 14문제 (25.02.19)  (1) 2025.02.19
[스터디] Java 프로그래머스 기초 24문제 & 머쓱이 획득 (25.02.18)  (1) 2025.02.18
[스터디] Java 프로그래머스 기초 30문제 (25.02.14)  (1) 2025.02.14
[스터디] Java 프로그래머스 기초 40문제 (25.02.13)  (1) 2025.02.13
'LG 유플러스 유레카 SW/스터디' 카테고리의 다른 글
  • [스터디] Java 프로그래머스 PCCE 기출 14문제 (25.02.19)
  • [스터디] Java 프로그래머스 기초 24문제 & 머쓱이 획득 (25.02.18)
  • [스터디] Java 프로그래머스 기초 30문제 (25.02.14)
  • [스터디] Java 프로그래머스 기초 40문제 (25.02.13)
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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
nueos
[스터디] Java 프로그래머스 기초 30문제 (25.02.17)
상단으로

티스토리툴바