문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
우주 탐사선이 화성에 불시착했다. 그들은 지구에 도움을 요청하기 위해 SOS 메세지를 연속으로 보낸다.
SOS 메세지에 글자가 전송 중에 우주 방사선 때문에 바꼈다. 지구에 수신된 문자열 s가 주어질 때, 얼마나 많은 SOS 메세지가 방사선에 의해 변경되었는지 결정해라.
s = 'SOSTOT'
최초의 메세지는 SOSSOS였다. 메세지의 두 개의 문자가 바뀌었다.
marsExploration 함수를 완성해라.
marsExploration 함수는 아래와 같은 매개변수를 가지고 있다.
Sample을 예시를 이해한다면 쉽게 해결할 수 있다. 세 글자씩 잘라서 각 위치에 문자를 비교하면 된다.
변수를 선언하는데 총 4개를 선언한다.
int left = 0; // 첫번째 글자, S와 비교
int middle = 1; // 두번째 글자, O와 비교
int right = 2; // 세번째 글자, S와 비교
int count = 0; // 변경된 글자 수
while문을 통해 right가 총 글자 수가 넘지 않을 때까지 반복하고, 각 문자를 비교해서 count를 증가시킨다. 비교가 끝났다면 비교할 글자 위치를 이동시킨다.
while(right < s.length()){
if(s.charAt(left) != 'S'){
count++;
}
if(s.charAt(middle) != 'O'){
count++;
}
if(s.charAt(right) != 'S'){
count++;
}
left += 3;
middle += 3;
right += 3;
}
마지막으로 count를 반환한다.
return count;
public static int marsExploration(String s) {
int left = 0;
int middle = 1;
int right = 2;
int count = 0;
while(right < s.length()){
if(s.charAt(left) != 'S'){
count++;
}
if(s.charAt(middle) != 'O'){
count++;
}
if(s.charAt(right) != 'S'){
count++;
}
left += 3;
middle += 3;
right += 3;
}
return count;
}