코딩문제 풀기 (9월 1일 월요일)

Devkty·2025년 9월 3일

취업도전기

목록 보기
22/32

오늘은 코딩테스트 문제를 풀었습니다. 중간에 크래프톤 채용팀에서 연락이 왔었습니다. 이런저런 면접 관련된 안내사항을 들었고, 당연히 진행한다고 이야기했습니다.

11:40 ~ 13:40

벨로그를 정리했습니다.

17:00 ~ 18:30

벨로그를 정리하고 코딩 문제를 풀었습니다.

[프로그래머스] 아이스 아메리카노 (입문)

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

이건 쉽다. 배열 선언해서 0번 배열은 아메리카노 갯수, 1번 배열은 금액 나머지를 리턴하게 하면된다.

class Solution {
    public int[] solution(int money) {
        int[] answer = {0,0};
        
        answer[0] = money / 5500;
        answer[1] = money % 5500;
        
        return answer;
    }
}

[프로그래머스] 배열 뒤집기 (입문)

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

num_list의 입력 배열을 뒤집은 배열로 출력하면 됩니다.
받은 배열을 (전체 배열 수 -1) 부터 차례대로 새로운 배열에 저장하면 되지 않을까 싶습니다.

중간에 배열을 동적으로 할당하고 Int 형으로 바꾸는 코드를 몰라 GPT를 참고하였습니다. 또한 범위 지정이 잘못되어있었는데 금방 수정하였습니다.

import java.util.*;

class Solution {
    public int[] solution(int[] num_list) {
        ArrayList<Integer> temp = new ArrayList<>();
        
        for(int i = num_list.length -1; i >= 0; i--) {
            temp.add(num_list[i]);
        }
        
        int[] answer = temp.stream().mapToInt(Integer::intValue).toArray();
        return answer;
    }
}

[프로그래머스] 뒤집힌 문자열 (입문)

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

전의 숫자 배열 뒤집기처럼 문자열을 처리하여 temp 배열에 역으로 저장합니다.
그다음에 ""안에 단어가 한번에 출력되어야하므로 temp 리스트의 모든 문자열을 하나로 합쳐서 할당합니다.
여기서 제가 몰랐던 부분이 있는데

  1. string 형식이면 배열의 길이를 .length()로 해야함.
  2. String.valueOf()를 쓰면 어떤 타입의 값이든 String(문자열)으로 안전하고 확실하게 바꿀 수 있음. null값 안전하게 처리와 의도를 명확하게 하기 위해 사용.
    이 두가지 포인트였습니다.
import java.util.*;

class Solution {
    public String solution(String my_string) {
        ArrayList<String> temp = new ArrayList<>();
        
        for(int i = my_string.length() -1; i >= 0; i--) {
            
            // 어떤 타입이든 String.valueOf()를 거치면 문자열이 됩니다.
            temp.add(String.valueOf(my_string.charAt(i)));
        }
        
        // temp 리스트의 모든 문자열을 하나로 합쳐서 할당
        String answer = String.join("",temp);
        return answer;
    }
}

그런데 다른 사람 풀이를 보니까 자바에 reverse로 배열을 역으로 출력하는 코드가 있습니다. 밑에 처럼 하면 바로 풀립니다.


import java.util.*;

class Solution {
    public String solution(String my_string) {
        StringBuilder sb = new StringBuilder();
        sb.append(my_string);
        sb.reverse();

        return sb.toString();
    }
}

21:00 ~ 23:00

코딩문제 풀었습니다.

[프로그래머스] 직각삼각형 출력하기 (입문)

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

n이 주어지면 그만큼 증가된 을 찍어내면 됩니다.
for문을 두개 사용하여 n만큼 줄바꿈하는 로직과 현재의 i만큼
을 반복하여 찍는 로직을 구현해야하므로 for문을 두개 사용합니다.

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

더 간단하게 reapeat을사용하여 다음과 같이 나타낼 수도 있습니다.

public class StarPatternSimple {
    public static void main(String[] args) {
        int n = 5;

        for (int i = 1; i <= n; i++) {
            // "*" 문자열을 i번 반복해서 출력
            System.out.println("*".repeat(i));
        }
    }
}

[프로그래머스] 문자 반복 출력하기 (입문)

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

쓰여진대로 각 문자를 나누어서 for문으로 n만큼 반복해서 출력하면될 것 같습니다.

지금까지 썻던 모든 개념을 혼합해서 작성하면 됩니다. 자력으로 해냈습니다. String처리와 배열 요소 반복을 잘 쓰면됩니다.

import java.util.*;

class Solution {
    public String solution(String my_string, int n) {
        
        ArrayList<String> temp = new ArrayList<>();
        
        for(int i = 0; i <= my_string.length()-1; i++) {
            for(int j = 1; j <= n; j++) {
                temp.add(String.valueOf(my_string.charAt(i)));
            }
        }

        String answer = String.join("",temp);
        return answer;
    }
}

reapeat을 쓰면 더욱 간단히 작성가능합니다.

class Solution {
    public String solution(String my_string, int n) {
        StringBuilder sb = new StringBuilder();
        for(char c : my_string.toCharArray()){
            sb.append((c + "").repeat(n));
        }
        return sb.toString();
    }
}
profile
모든걸 기록하며 성장하고 싶은 개발자입니다. 현재 크래프톤 정글 8기를 수료하고 게임회사에서 일을 하고 있습니다.

0개의 댓글