프로그래머스 Day 24 조건문 활용, 반복문 활용, 이차원 리스트(배열)
커피 심부름
💫문제 설명💫
팀의 막내인 철수는 아메리카노와 카페 라테만 판매하는 카페에서 팀원들의 커피를 사려고 합니다.
아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원입니다.
각 팀원에게 마실 메뉴를 적어달라고 하였고,
그 중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고 "아무거나"를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였습니다.
각 직원이 적은 메뉴가 문자열 배열 order로 주어질 때, 카페에서 결제하게 될 금액을 return 하는 solution 함수를 작성해주세요.
order의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같습니다.
order의 원소 | 의미 |
---|---|
“iceamericano”, “americanoice” | 차가운 아메리카노 |
“hotamericano”, “americanohot” | 따뜻한 아메리카노 |
“icecafelatte”, “cafelatteice” | 차가운 카페 라테 |
“hotcafelatte”, “cafelattehot” | 따뜻한 카페 라테 |
“americano” | 아메리카노 |
“cafelatte” | 카페 라테 |
“anything” | 아무거나 |
💫제한사항💫
1 ≤ order의 길이 ≤ 1,000
💫입출력 ex💫
order | result |
---|---|
[“cafelatte”, “americanoice”, “hotcafelatte”, “anything”] | 19000 |
[“americanoice”, “americano”, “iceamericano”] | 13500 |
문제풀이
class Solution {
public int solution(String[] order) {
int answer = 0;
for(int i=0; i < order.length; i++) {
if(order[i].contains("americano") || order[i].contains("anything")) {
answer += 4500;
} else if(order[i].contains("cafelatte")) {
answer += 5000;
}
}
return answer;
}
}
그람 확대
💫문제 설명💫
직사각형 형태의 그림 파일이 있고,
이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다.
이 그림 파일을 나타낸 문자열 배열 picture과 정수 k가 매개변수로 주어질 때,
이 그림 파일을 가로 세로로 k배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
💫제한사항💫
1 ≤ picture의 길이 ≤ 20
1 ≤ picture의 원소의 길이 ≤ 20
모든 picture의 원소의 길이는 같습니다.
picture의 원소는 '.'과 'x'로 이루어져 있습니다.
1 ≤ k ≤ 10
💫입출력 ex💫
picture | k | result |
---|---|---|
[“.xx…xx.”, “x..x.x..x”, “x…x…x”, “.x…..x.”, “..x…x..”, “…x.x…”, “….x….”] | 2 | [”..xxxx……xxxx..”, “..xxxx……xxxx..”, “xx….xx..xx….xx”, “xx….xx..xx….xx”, “xx……xx……xx”, “xx……xx……xx”, “..xx……….xx..”, “..xx……….xx..”, “….xx……xx….”, “….xx……xx….”, “……xx..xx……”, “……xx..xx……”, “……..xx……..”, “……..xx……..”] |
[“x.x”, “.x.”, “x.x”] | 3 | [“xxx…xxx”, “xxx…xxx”, “xxx…xxx”, “…xxx…”, “…xxx…”, “…xxx…”, “xxx…xxx”, “xxx…xxx”, “xxx…xxx”] |
문제풀이
class Solution {
public String[] solution(String[] picture, int k) {
int h = picture.length; // 행
int w = picture[0].length(); // 열
String[] answer = new String[h * k];
for (int i = 0; i < h * k; i++) {
StringBuilder row = new StringBuilder();
for (int j = 0; j < w * k; j++) {
// 원본에서 해당 행과 열에서 문자를 가져와서 추가 (i / k번째 행의 j / k번째 열에 해당하는 문자)
row.append(picture[i / k].charAt(j / k));
}
answer[i] = row.toString();
}
return answer;
}
}
조건에 맞게 수열 변환하기 3
💫문제 설명💫
정수 배열 arr와 자연수 k가 주어집니다.
만약 k가 홀수라면 arr의 모든 원소에 k를 곱하고, k가 짝수라면 arr의 모든 원소에 k를 더합니다.
이러한 변환을 마친 후의 arr를 return 하는 solution 함수를 완성해 주세요.
💫제한사항💫
1 ≤ arr의 길이 ≤ 1,000,000
1 ≤ arr의 원소의 값 ≤ 100
1 ≤ k ≤ 100
💫입출력 ex💫
arr | k | result |
---|---|---|
[1, 2, 3, 100, 99, 98] | 3 | [3, 6, 9, 300, 297, 294] |
[1, 2, 3, 100, 99, 98] | 2 | [3, 4, 5, 102, 101, 100] |
문제풀이
class Solution {
public int[] solution(int[] arr, int k) {
int[] answer = new int[arr.length];
for(int i = 0; i < arr.length; i++){
answer[i] = (k%2 == 0) ? arr[i] + k : arr[i] * k;
}
return answer;
}
}
l로 만들기
💫문제 설명💫
알파벳 소문자로 이루어진 문자열 myString이 주어집니다.
알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요.
💫제한사항💫
1 ≤ myString ≤ 100,000
myString은 알파벳 소문자로 이루어진 문자열입니다.
💫입출력 ex💫
myString | result |
---|---|
“abcdevwxyz” | “lllllvwxyz” |
“jjnnllkkmm” | “llnnllllmm” |
문제풀이
class Solution {
public String solution(String myString) {
return myString.replaceAll("[^l-z]", "l");
}
}
특별한 이차원 배열 1
💫문제 설명💫
정수 n이 매개변수로 주어질 때, 다음과 같은 n × n 크기의 이차원 배열 arr를 return 하는 solution 함수를 작성해 주세요.
arr[i][j] (0 ≤ i, j < n)의 값은 i = j라면 1, 아니라면 0입니다.
💫제한사항💫
1 ≤ n ≤ 100
💫입출력 ex💫
n | result |
---|---|
3 | [[1, 0, 0], [0, 1, 0], [0, 0, 1]] |
6 | [[1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 1]] |
1 | [[1]] |
문제풀이
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;
}
}
Leave a comment