View

https://www.acmicpc.net/problem/2577

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net

📚 문제

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

예제 입력 예제 출력
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
10
9
7
55
30

 

💻 코드

import java.util.Scanner;

public class Main{
    public static void main(String args[]){
       Scanner sc=new Scanner(System.in);
       int num=sc.nextInt();
       int count=0;
       int tmp=0;
       String[] array_word;
       int[] score=new int[num];
       
       for(int i=0;i<num;i++) {
           String word=sc.next();
           array_word=word.split("");

           for(int j=0;j<array_word.length;j++) {
               if(array_word[j].equals("O")) tmp+=1;
               else tmp=0;
               count+=tmp;
           }
           score[i]=count;
           count=0;
           tmp=0;
       }
       
       for(int i=0;i<num;i++) {
           System.out.println(score[i]);
       }
    }
}​

 

* split : split은 문자열에서 나누고싶은 문자를 기준으로 단어를 나눠 배열로 반환하여 준다.

  • 공백으로 분리 : \\s
  • 공백이 여러개인 경우 : \\s+

1
2
3
4
5
String str = "hello~java~world";
String[] arr = str.split("~");
for (String string : arr) {
    System.out.println(string);
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
hello
java
world

 

💡 다른 사람 코드

 
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int num = sc.nextInt();
        
        String[] str = new String[num+1];

        for (int i = 0; i < num; i++) {
            int count = 0, sum = 0;
            str[i] = sc.next();
            for (int j =0; j < str[i].length(); j++) {
                if (str[i].charAt(j) == 'O')
                    sum += ++count;
                else count = 0;
            }
            System.out.println(sum);
        }
        
        sc.close();
    }
}

 

* charAt(인수) : 인수번째의 문자를 읽어낸다.

1
2
String a="abcd";
System.out.println(a.charAt(1));
b

 indexOf(문자) :  해당 문자가 들어있는 위치를 알려준다. (문자가 없으면 -1 반환)

1
2
String a="abcd";
System.out.println(a.indexOf("c"))
2

 subString(인수,인수) :  첫번째 인수는 시작지점 문자, 두번째 인수는 끝지점에 다음 문자

1
2
String a="abcde";
System.out.println(a.substring(1,3))
bc
728x90
Share Link
reply
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31