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

벨로그를 정리했습니다.
벨로그를 정리하고 코딩 문제를 풀었습니다.
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 리스트의 모든 문자열을 하나로 합쳐서 할당합니다.
여기서 제가 몰랐던 부분이 있는데
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();
}
}
코딩문제 풀었습니다.
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();
}
}