내 풀이
처음엔 주어진 String 값을 chars()
로 분리시킨다음 바로 forEach()
를 사용하고 그 안에 람다식을 한번 응용해보는 방향으로 가려고 했었다.
br.nextLine().chars().forEach( c -> c.equals('O') ? 지역변수 += 1 : 지역변수 = 0);
하지만 막상 실행해보니 람다식 안에서 바로 지역변수 값이 변경되지 못하고 계속해서 컴파일 오류가 발생하여 결국 람다식 사용은 하지 못했다.
추후 왜 여기서 컴파일 오류가 났고 Java에서 람다식은 어떻게 사용해야하는지 따로 포스팅하여 기록할 예정이다.
람다식을 사용하지 않고 푼 내 풀이는 아래와 같다.
-> for문으로 주어진 문자열 총 갯수만큼 루프를 돌린다
-> 주어진 각 문자열을 split으로 나눠 배열에 담는다
-> for문으로 배열 안의 데이터를 하나씩 꺼내 O일경우 지역변수에 1을 더하고 아닐경우 지역변수 값을 0으로 지정한 후 총합을 구한다
[코드보기]
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int first = Integer.parseInt(br.readLine());
int n = 0;
int answer = 0;
for(int i=0; i < first; i++){
String[] str = br.readLine().split("");
for(String ss : str) {
if(ss.equals("O")){n += 1;} else {n = 0;}
answer+=n;
}
System.out.println(answer);
n = 0;
answer = 0;
}
}
}
다른사람의 풀이
배열을 사용하지 않고 풀어낸 경우를 발견해 기록해둔다.
여기서는 문자열 자체에 length()
를 사용해서 길이를 구한 뒤 for문을 돌며 charAt(i)
로 i의 순번째에 있는 문자를 불러와 비교시켰다.
for(int i=0; i<str.length(); i++){
if(str.charAt(i)=='O'){
맞을경우
}else{
틀릴경우
}
}
이런식으로 아예 문자열 상 특정 위치에 있는 한글자를 불러올 수도 있는 것과
char 형을 ==
로 비교 가능하다는 점(이때 변수는 ""
가 아닌 ''
로 감싸야만한다!)
꼭 기억해두자
댓글남기기