문제 설명
문자열 myString이 주어집니다. myString을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ myString의 길이 ≤ 100,000
- myString은 알파벳 소문자로 이루어진 문자열입니다.
입출력 예
myString | result |
"oxooxoxxox" |
[1, 2, 1, 0, 1, 0] |
"xabcxdefxghi" | [0, 3, 3, 3] |
입출력 예 설명
입출력 예 #1
- "x"를 기준으로 문자열을 나누면 ["o", "oo", "o", "", "o", ""]가 됩니다. 각각의 길이로 배열을 만들면 [1, 2, 1, 0, 1, 0]입니다. 따라서 [1, 2, 1, 0, 1, 0]을 return 합니다.
입출력 예 #2
- "x"를 기준으로 문자열을 나누면 ["", "abc", "def", "ghi"]가 됩니다. 각각의 길이로 배열을 만들면 [0, 3, 3, 3]입니다. 따라서 [0, 3, 3, 3]을 return 합니다.
class Solution {
public int[] solution(String myString) {
String[] parts = myString.split("x");
// "x"가 문자열의 끝에 있을 경우 빈 문자열을 마지막에 추가
if (myString.endsWith("x")) {
String[] temp = new String[parts.length + 1];
System.arraycopy(parts, 0, temp, 0, parts.length);
temp[parts.length] = "";
parts = temp;
}
// 각 부분의 길이를 계산하여 결과 배열에 저장
int[] answer = new int[parts.length];
for (int i = 0; i < parts.length; i++) {
answer[i] = parts[i].length();
}
return answer;
}
}
문제 설명
문자열 myString이 주어집니다. "x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.
단, 빈 문자열은 반환할 배열에 넣지 않습니다.
제한사항
- 1 ≤ myString ≤ 100,000
- myString은 알파벳 소문자로 이루어진 문자열입니다.
입출력 예
myString | result |
"axbxcxdx" |
["a","b","c","d"] |
"dxccxbbbxaaaa" | ["aaaa","bbb","cc","d"] |
입출력 예 설명
입출력 예 #1
- myString을 "x"를 기준으로 자른 배열은 ["a","b","c","d"]이며, 이 배열은 이미 사전순으로 정렬된 상태입니다. 따라서 해당 배열을 return 합니다.
입출력 예 #2
- myString을 "x"를 기준으로 자른 배열은 ["d","cc","bbb","aaaa"]이며, 이 배열을 사전순으로 정렬하면 ["aaaa","bbb","cc","d"]입니다. 따라서 해당 배열을 return 합니다.
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public String[] solution(String myString) {
String[] parts = myString.split("x");
// 빈 문자열을 제외한 유효한 부분만 필터링
List<String> resultList = new ArrayList<>();
for (String part : parts) {
if (!part.isEmpty()) {
resultList.add(part);
}
}
// 사전순으로 정렬
Collections.sort(resultList);
// 리스트를 배열로 변환하여 반환
return resultList.toArray(new String[0]);
}
}
문제 설명
문자열 binomial이 매개변수로 주어집니다. binomial은 "a op b" 형태의 이항식이고 a와 b는 음이 아닌 정수, op는 '+', '-', '*' 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요.
제한사항
- 0 ≤ a, b ≤ 40,000
- 0을 제외하고 a, b는 0으로 시작하지 않습니다.
입출력 예
binomial | result |
"43 + 12" |
55 |
"0 - 7777" | -7777 |
"40000 * 40000" | 1600000000 |
입출력 예 설명
입출력 예 #1
- 예제 1번의 binomial은 "43 + 12"로 이 식을 계산한 결과인 43 + 12 = 55를 return 합니다.
입출력 예 #2
- 예제 2번의 binomial은 "0 - 7777"로 이 식을 계산한 결과인 0 - 7777 = -7777을 return 합니다.
입출력 예 #3
- 예제 3번의 binomial은 "40000 * 40000"으로 이 식을 계산한 결과인 40000 × 40000 = 1600000000을 return 합니다.
class Solution {
public int solution(String binomial) {
String[] parts = binomial.split(" ");
// a, b는 문자열로 들어오므로 정수로 변환
int a = Integer.parseInt(parts[0]);
int b = Integer.parseInt(parts[2]);
String op = parts[1];
// 연산자에 따라 계산 수행
if (op.equals("+")) {
return a + b;
} else if (op.equals("-")) {
return a - b;
} else if (op.equals("*")) {
return a * b;
}
// 유효한 연산자가 아닐 경우
return 0;
}
}
문제 설명
문자 "A"와 "B"로 이루어진 문자열 myString과 pat가 주어집니다. myString의 "A"를 "B"로, "B"를 "A"로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을 return 하는 solution 함수를 완성하세요.
제한사항
- 1 ≤ myString의 길이 ≤ 100
- 1 ≤ pat의 길이 ≤ 10
- myString과 pat는 문자 "A"와 "B"로만 이루어진 문자열입니다.
입출력 예
myString | pat | result |
"ABBAA" |
"AABB" | 1 |
"ABAB" | "ABAB" | 0 |
입출력 예 설명
입출력 예 #1
- "ABBAA"에서 "A"와 "B"를 서로 바꾸면 "BAABB"입니다. 여기에는 부분문자열 "AABB"가 있기 때문에 1을 return 합니다.
입출력 예 #2
- "ABAB"에서 "A"와 "B"를 서로 바꾸면 "BABA"입니다. 여기에는 부분문자열 "BABA"가 없기 때문에 0을 return 합니다.
class Solution {
public int solution(String myString, String pat) {
StringBuilder swappedString = new StringBuilder();
for (char c : myString.toCharArray()) {
if (c == 'A') {
swappedString.append('B');
} else if (c == 'B') {
swappedString.append('A');
}
}
// 치환된 문자열에서 pat이 부분 문자열로 존재하는지 확인
if (swappedString.toString().contains(pat)) {
return 1;
} else {
return 0;
}
}
}
문제 설명
'm'과 "rn"이 모양이 비슷하게 생긴 점을 활용해 문자열에 장난을 하려고 합니다. 문자열 rny_string이 주어질 때, rny_string의 모든 'm'을 "rn"으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ rny_string의 길이 ≤ 100
- rny_string은 영소문자로만 이루어져 있습니다.
입출력 예
rny_string | result |
"masterpiece" |
"rnasterpiece" |
"programmers" | "prograrnrners" |
"jerry" | "jerry" |
"burn" | "burn" |
입출력 예 설명
입출력 예 #1
- 예제 1번의 rny_string의 'm'을 "rn"으로 바꾸는 과정을 표로 나타내면 다음과 같습니다.
|rny_string|m|a|s|t|e|r|p|i|e|c|e|
|---------|-|-|-|-|-|-|-|-|-|-|-|
|result|rn|a|s|t|e|r|p|i|e|c|e|
따라서 "rnasterpiece"를 return 합니다.
입출력 예 #2
- 예제 2번의 rny_string의 'm'을 "rn"으로 바꾸는 과정을 표로 나타내면 다음과 같습니다.
|rny_string|p|r|o|g|r|a|m|m|e|r|s|
|---------|-|-|-|-|-|-|-|-|-|-|-|
|result|p|r|o|g|r|a|rn|rn|e|r|s|
따라서 "prograrnrners"를 return 합니다.
입출력 예 #3
- 예제 3번의 rny_string에는 'm'이 없습니다. 따라서 rny_string 그대로인 "jerry"를 return 합니다.
입출력 예 #4
- 예제 4번의 rny_string에는 'm'이 없습니다. 따라서 rny_string 그대로인 "burn"를 return 합니다.
class Solution {
public String solution(String rny_string) {
return rny_string.replace("m", "rn");
}
}
'기타 > study' 카테고리의 다른 글
코딩 기초 트레이닝 - 프로그래머스(차근차근 시작해 보세요 Day 19) (0) | 2025.01.17 |
---|---|
코딩 기초 트레이닝 - 프로그래머스(차근차근 시작해 보세요 Day 17) (1) | 2025.01.15 |
코딩 기초 트레이닝 - 프로그래머스(차근차근 시작해 보세요 Day 16) (0) | 2025.01.14 |
코딩 기초 트레이닝 - 프로그래머스(차근차근 시작해 보세요 Day 15) (0) | 2025.01.13 |
코딩 기초 트레이닝 - 프로그래머스(차근차근 시작해 보세요 Day 14) (0) | 2025.01.10 |