134. 세 개의 구분자
import java.util.*;
class Solution {
public String[] solution(String myStr) {
List<String> list = new ArrayList<>();
int start = 0;
int end = 0;
for(int i=0; i<myStr.length(); i++){
char ch = myStr.charAt(i);
if(ch == 'a' || ch == 'b' || ch == 'c'){
if(end > start){
String sub = myStr.substring(start, end);
list.add(sub);
}
start = i+1;
}
end = i+1;
}
if(end > start){
String sub = myStr.substring(start, end);
list.add(sub);
}
if(list.isEmpty()){
return new String[]{"EMPTY"};
} else{
return list.toArray(new String[0]);
}
}
}
<작성한 코드>
문자열 형식의 List를 하나 만들어줬다. 그 뒤 각각의 원소들을 ch에 넣어주고 비교했다. 만약 ch가 a, b, c 중 하나라면 조건에 걸리고 내부에서 한번 더 걸린다. end가 start보다 크다면 sub변수 안에 myStr을 start번째부터 end까지 넣어주고 list에 추가했다. 이때 start는 if가 한번 실행될 때 i+1로 해줬고, end는 전체반복문이 끝나기 전에 i+1을 해줬다. 그 뒤 end가 start보다 크다면 다시 한번 substring을 이용해서 자르고 list에 넣어줬다. 만약 list가 비어있으면 EMPTY를 반환하고 아니라면 toArray()를 사용하여 리스트를 배열로 변환하여 반환했다.
135. rny_string
class Solution {
public String solution(String rny_string) {
String answer = rny_string.replace("m", "rn");
return answer;
}
}
<작성한 코드>
간단한 문제였다. replace를 사용하여 m이 들어가 있으면 rn으로 바꿔주었다. 그 후 반환하였다.
136. 문자열 바꿔서 찾기
import java.util.*;
class Solution {
public int solution(String myString, String pat) {
int answer = 0;
String reString = myString.replace('A', 'X').replace('B', 'Y')
.replace('X', 'B').replace('Y', 'A');
if(reString.contains(pat)) answer = 1;
return answer;
}
}
<작성한 코드>
처음에 myString.replace('A', 'B').replace('B', 'A') 했다가 잘못 생각했단 걸 깨닫고 다시 작성했다. 앞에 말한 코드대로 하면 바뀐 B도 다시 A로 바뀌기 때문에 실행할 수 없다. 그래서 A는 X로 바꿔두고 B는 Y로 바꿔둔 뒤에 다시 X를 B, Y를 A로 바꿔줬다. 그 뒤에 contains를 사용해서 reString안에 pat이 포함되는지 확인한 뒤에 확인되면 answer에 1을 넣어주고, 아니면 그대로 0이 담긴 채로 반환될 것이다.
137. 간단한 식 계산하기
class Solution {
public int solution(String binomial) {
int answer = 0;
String[] result = binomial.split(" ");
int num1 = Integer.parseInt(result[0]);
int num2 = Integer.parseInt(result[2]);
if(result[1].equals("+")){
answer = num1 + num2;
} else if(result[1].equals("-")){
answer = num1 - num2;
} else{
answer = num1 * num2;
}
return answer;
}
}
<작성한 코드>
binomial 문자열을 공백을 기준으로 나눠서 리스트에 저장했다. 그리고 문자열이기 때문에 계산을 하기 위해 Integer.parseInt()를 사용해서 result [0], result [2]에 들어있는 문자열들을 정수형으로 변환했다. if문에서 result [1]에 들어있는 기호가 +일 때는 두 값을 더해주고, -일 때는 빼주고, 아니면 곱해주고 answer을 반환했다.
138. 문자열 잘라서 정렬하기
import java.util.*;
class Solution {
public String[] solution(String myString) {
String[] splitAnswer = myString.split("x");
List<String> list = new ArrayList<>();
for(String str : splitAnswer){
if(!str.isEmpty()){
list.add(str);
}
}
Collections.sort(list);
String[] answer = new String[list.size()];
answer = list.toArray(answer);
return answer;
}
}
<작성한 코드>
splitAnswer에 x를 기준으로 나눈 문자열을 배열형식으로 대입해 줬다. 그리고 list를 하나 만들어서 splitAnswer안에 있는 값이 비어있지 않다면 list에 추가해 줬다. 그 후 Collections.sort()를 이용해서 list를 오름차순으로 정렬해 준 뒤에 answer변수를 만들어서 list의 길이만큼 선언해 주고 toArray()를 사용해서 answer의 배열형식으로 list안의 값을 answer에 대입해 준 뒤 반환하였다.
139. x 사이의 개수
class Solution {
public int[] solution(String myString) {
String[] splitString = myString.split("x", myString.length());
int[] answer = new int[splitString.length];
for(int i=0; i<splitString.length; i++){
answer[i] = splitString[i].length();
}
return answer;
}
}
<작성한 코드>
myString을 x를 기준으로 나눠줬고 최대수도 myString.length()를 사용해서 설정해 줬다. 그 뒤 splitString의 길이만큼의 크기를 갖는 answer를 생성해 줬다. answer안에는 splitString의 각 배열들의 길이를 대입해 주고 반환하였다.
'프로그래머스 문제풀이 > 알고리즘 (JAVA)' 카테고리의 다른 글
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (150~161번 문제풀이) (1) | 2023.10.17 |
---|---|
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (140~149번 문제풀이) (0) | 2023.10.16 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (127~133번 문제풀이) (0) | 2023.10.12 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (123~126번 문제풀이) (0) | 2023.10.10 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (116~122번 문제풀이) (1) | 2023.10.09 |
남건욱's 공부기록