본문 바로가기
코딩테스트

백준 8958번

by 멈추지않아 2022. 10. 10.
백준주소:https://www.acmicpc.net/submit/8958
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

import java.util.List;

public class Main {
  public static void main(String[] args) throws NumberFormatException, IOException {
    //scan 처럼 int 받아오기
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int fir = Integer.parseInt(br.readLine());
   //OX스트링 받을 배열
    String[] sor = new String[fir];
    //정답을 받을 배열 add쓰기위에 List로 씀 []이거쓰면 인덱스써서 더해줘야됨
    List<Integer> soi = new ArrayList<Integer>();
    //입력받은 OX글자를 잠시 보관하기위한 공간
    String etc = "";
    //String출력할때 더 빠른것
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < fir; i++) {
      //scan처럼 String받아오는거
      etc = br.readLine();
      sor[i] = etc;
    }
    //O가 나오면 어느숫자를 더해줄지 기준 +1해서 sum에 더하기해줌 (한줄 기준)
    int cou = 0;
    //이때까지 더해준 총값(한줄 기준)
    int sum=0;
    //입력받은 String배열 for문 도는것
    for (String li : sor) {
     //글자 갯수만큼 for문돌아서 모든 글자 검사하게 하기
      for (int j = 0; j < li.length(); j++) {
        //O이면 cou에 1더해주고 그 값음 suma에 더해준다.
        if (li.charAt(j) == 'O') {
          cou = cou + 1;
          sum+=cou;
        } else {
          //X면 cou값을 초기화해줘서 다음에 1부터 더해줄수 있도록 한다.
            cou=0;        
        }
        //for문 마지막이면 배열에 sum을 더해주고 sum,cou를 초기화해준다.
        if(j==li.length()-1) {
         
          soi.add(sum);
        
          sum=0;
          cou=0;
        }
        
      }
      
    }
    //Stringbuilder를 이용해서 출력할 String을 만든다
    for (int y = 0; y < fir; y++) {
      sb.append(soi.get(y)).append("\n");
    }
  //출력
    System.out.println(sb);
  }
}

처음에는 O부분에서 배열로 한개씩 넣어주고 그길이로 몇을 넣을지 정하고 총합을 배열로 만들려고 했습니다.

조금씩 코드를 써보니까 배열이 없어도 될거 같더라고요  그래서 cou에 더해줄 수 를 만들어주고 sum변수에 계속 그거를 더해주고 X가 나올때마다 0으로 초기화 시켜주면 되니까 더 좋은코드가 만들어졌습니다. 너말고 다른 친구 코드를 봤는데 거기서 참고하면 지금 입력 배열을 다 완성하고 for문을 도는데 그러지말고 입력한개 받고 계산하고 하면 for문을 한개 더 줄일수 있을거 같습니다.

'코딩테스트' 카테고리의 다른 글

백준1316  (0) 2022.10.14
백준5622  (0) 2022.10.13
백준2908  (0) 2022.10.12
백준 4344번  (0) 2022.10.11