목차
#1 문자열 바꿔서 찾기
문제 설명
문자 "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 |
#2 알고리즘 및 코드
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
String myString = "ABBAA";
String pat = "AABB";
Solution solution = new Solution();
System.out.println(solution.solution(myString, pat));
}
}
class Solution {
public int solution(String myString, String pat) {
// stream의 각 요소를 처리하며 리스트에 추가
List<Character> list = new ArrayList<>();
for(int i = 0; i < myString.length(); i++){
if(myString.charAt(i) == 'A')
list.add('B');
else
list.add('A');
}
return list.stream().map(String::valueOf).collect(Collectors.joining()).contains(pat) ? 1 : 0;
}
}
- 이 코드는 List를 이용하여 반전된 문자를 추가하고 스트림을 이용하여 문자열로 변환하는 과정을 통해 pat가 있는지 없는지 판별한다.
class Solution {
public int solution(String myString, String pat) {
// stream의 각 요소를 처리하며 리스트에 추가
List<Character> list = myString.chars()
.mapToObj(c -> (char) (c == 'A' ? 'B' : 'A'))
.collect(Collectors.toList());
return list.stream().map(String::valueOf).collect(Collectors.joining()).contains(pat) ? 1 : 0;
}
}
728x90
'JAVA > 프로그래머스 코딩 기초 트레이닝' 카테고리의 다른 글
[프로그래머스 LV.0] 배열의 원소만큼 추가하기 (0) | 2024.02.12 |
---|---|
[프로그래머스, LV.0] 세 개의 구분자 (0) | 2024.02.12 |
[프로그래머스, LV.0] 간단한 식 계산하기 (0) | 2024.01.06 |
[프로그래머스, LV.0] 문자열 잘라서 정렬하기 (1) | 2024.01.06 |
[프로그래머스, LV.0] x 사이의 개수 (0) | 2024.01.06 |