
⚠️ 주의!
프로그래머스에서 낸 코딩 문제에 대한 해답이 들어있습니다.
열람 시 주의해주세요.
프로그래머스에서 낸 코딩 문제에 대한 해답이 들어있습니다.
열람 시 주의해주세요.

내일로 기초문제가 마무리된다.
커피 심부름

문제 해설
카페라떼를 기준으로 contains하여 if문을 쓰면 된다.
정답
class Solution {
public int solution(String[] order) {
int answer = 0;
for(String menu : order){
if(menu.contains("cafelatte")){
answer += 5000;
} else {
answer += 4500;
}
}
return answer;
}
}
그림 확대
직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다. 이 그림 파일을 나타낸 문자열 배열 picture과 정수 k가 매개변수로 주어질 때, 이 그림 파일을 가로 세로로 k배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
문제 해설
StringBuilder 사용을 추천한다. 배열의 각 string의 char을 charAt으로 만들어 k배로 StringBuilder에 append하면 된다.
정답
class Solution {
public String[] solution(String[] picture, int k) {
String[] answer = {};
answer = new String[picture.length * k];
int idx = 0;
for(int i = 0; i < picture.length; i++){
StringBuilder sb = new StringBuilder();
for(int j = 0; j < picture[i].length(); j++){
char c = picture[i].charAt(j);
for(int n = 0; n < k; n++){
sb.append(c);
}
}
for(int n = 0; n < k; n++){
answer[idx++] = sb.toString();
}
}
return answer;
}
}
더 간략하게는 repeat을 사용하면 된다. 다만, repeat은 String만 되므로 c를 String화해야한다. 또한 세로 확장 시에는 필드로 두는 게 좋다(toString 과정을 생략함)
class Solution {
public String[] solution(String[] picture, int k) {
String[] answer = new String[picture.length * k];
int idx = 0;
for (String row : picture) {
StringBuilder sb = new StringBuilder();
for (char c : row.toCharArray()) {
sb.append(String.valueOf(c).repeat(k));
}
String expandedRow = sb.toString();
for (int n = 0; n < k; n++) {
answer[idx++] = expandedRow;
}
}
return answer;
}
}
다만 다른 방법도 존재한다. Arrays.fill과 char[]을 사용하는 방법이다.
import java.util.Arrays;
class Solution {
public String[] solution(String[] picture, int k) {
int r = picture.length;
int c = picture[0].length();
String[] answer = new String[r * k];
for (int i = 0; i < r; i++) {
char[] expanded = new char[c * k];
for (int j = 0; j < c; j++) {
Arrays.fill(expanded, j * k, (j + 1) * k, picture[i].charAt(j));
}
String expandedRow = new String(expanded);
for (int n = 0; n < k; n++) {
answer[i * k + n] = expandedRow;
}
}
return answer;
}
}
Arrays.fill()
배열 초기화, 배열의 모든 값을 같은 값으로 채워 넣는 기능이다.
여기서는 char[] expanded를 j * k부터 j + 1 *k 까지 picture[i].charAt으로 채웠다.
조건에 맞게 수열 변환하기 3
정수 배열 arr와 자연수 k가 주어집니다.
만약 k가 홀수라면 arr의 모든 원소에 k를 곱하고, k가 짝수라면 arr의 모든 원소에 k를 더합니다.
이러한 변환을 마친 후의 arr를 return 하는 solution 함수를 완성해 주세요.
문제 해설
그냥 홀짝 여부 알고 겹연산하는 것.
정답
class Solution {
public int[] solution(int[] arr, int k) {
boolean even = (k % 2 == 0);
for(int i = 0; i < arr.length; i++){
if(even){
arr[i] += k;
} else {
arr[i] *= k;
}
}
return arr;
}
}
stream 사용이 제일 많았다.
l로 만들기
알파벳 소문자로 이루어진 문자열 myString이 주어집니다. 알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요.
문제 해설
l보다 수가 적으면 l로 바꾸면 된다.
처음 제출 코드는 이거였다.
class Solution {
public String solution(String myString) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < myString.length(); i++){
char a = myString.charAt(i);
if(a - '0' < 'l' - '0'){
sb.append("l");
} else {
sb.append(a);
}
}
return sb.toString();
}
}
여기서 원래부터 char값은 서로 비교가능하다는 걸 깨달음.
그리고 StringBuilder가 아니라 char로 된 Array 사용을 하면 더 간단해진다.
정답
class Solution {
public String solution(String myString) {
char[] arr = myString.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (arr[i] < 'l') {
arr[i] = 'l';
}
}
return new String(arr);
}
}
특별한 이차원 배열 1
정수 n이 매개변수로 주어질 때, 다음과 같은 n × n 크기의 이차원 배열 arr를 return 하는 solution 함수를 작성해 주세요.
arr[i][j] (0 ≤ i, j < n)의 값은 i = j라면 1, 아니라면 0입니다.
문제 해설
그냥 대각선 배열 문제다. i 하나만으로 for문 돌려 할당하면 된다.
answer의 길이는 [n][n]으로 설정.
정답
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
for(int i = 0; i < n; i++) {
answer[i][i] = 1;
}
return answer;
}
}'코테런 > 코딩 기초 트레이닝(완주)' 카테고리의 다른 글
| [코딩 테스트 RUN] 코딩 기초 트레이닝 25일차: 완주 (0) | 2026.03.02 |
|---|---|
| [코딩 테스트 RUN] 코딩 기초 트레이닝 23일차: 조건문 활용 (0) | 2026.02.28 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 22일차: 함수(메서드), 조건문 활용 (0) | 2026.02.27 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 21일차: 함수(메서드) (0) | 2026.02.26 |
| [코딩 테스트 RUN] 코딩 기초 트레이닝 20일차: 함수(메서드) (0) | 2026.02.25 |