Solution 1) 내 풀이
import java.util.Arrays;
import java.util.stream.Collectors;

class Solution {
    public int solution(String myString, String pat) {
        return Arrays.stream(myString.split(""))
                     .map(s -> s.equals("A") ? "B" : "A")
                     .collect(Collectors.joining())
                     .contains(pat) ? 1: 0;
    }
}

 

문제 및 코드 리뷰

A와 B로 이루어진 문자열을 A ? B : A 로 바꿔서 또 다른 A와 B로만 이루어진 문자열 pat이 그 안에 속하는지 1 또는 0으로 반환하는 문제이다.

 

stream으로 풀어봤다.

  • 문자열이 다행이도? 공백자 없이 붙어 있어 간단하게 split("") 해줬다.
  • map에 삼항연산자로 A ? B : A 문자열을 재배열
  • collect(Collectors.joining()) 으로 재배열 된 요소들을 결합
  • contains(pat) ? 1 : 0 삼항 연산자를 이용해 해당 값을 반환

 

+ Recent posts