[백준/JAVA] 1차원 배열 - 8958번 OX퀴즈!!!!!

신승현·2022년 8월 8일
0

더 좋은 문제 풀이가 있거나 궁금하신 점이 있다면 편하게 댓글 남겨주세요!


📝 문제


8958번 OX퀴즈


🤷‍♂️ 접근 방법


이번 문제에서는 Scanner의 메서드에 대한 이해가 중요했던 문제입니다. 그렇지 않다면 입력 과정에서 오류가 발생했을 것입니다. 그렇다면 먼저 [백준/JAVA] 문자열 - 11654번 아스키 코드 를 통해 Scanner의 입력 메서드에 대해 알아보도록 하겠습니다.

📌 nextInt( ) 사용 후 nextLine( ) 사용시 문제 발생

Scanner.nextInt() 메소드는 사용자 입력의 가장 마지막 개행문자(Enter, newline)를 제거하지 않고 개행문자(Enter) 전까지만 숫자로 입력 받습니다.

이때 남겨진 개행문자(Enter)가 다음에 호출된 Scanner.nextLine( ) 메소드의 입력으로 처리되어 문제가 발생합니다.

💡 문제상황

만약 123을 입력하고 Enter를 입력하면 Enter 전까지의 숫자 123만 num에 저장되고 남은 Enter는 sc.nextLine()에 공백으로 입력 처리가 되어 문제가 발생합니다.

	int num = sc.nextInt();
    
	Stirng str = sc.nextLine(); // 개행문자 Enter가 str에 저장됨

📝 해결방법 1

	int num = sc.nextInt();
    sc.nextLine();    //개행문자 Enter를 제거하기 위해 추가

	Stirng str = sc.nextLine(); 

📝 해결방법 2

	int num = Integer.parseInt(sc.nextInt());

	Stirng str = sc.nextLine(); 


📌 문자열 비교 equals() , ==

Java에서 문자열 비교(String)에 쓰이는 equals() 메소드와 비교연산자인 == 에 대해 알아보겠습니다.

먼저 == 는 기본 타입(char, int, long, float, double) 변수값을 비교할 때 사용하는 비교연산자 입니다.

다음으로 equals()는 참조타입인 String 변수 비교 시에 사용하는 메소드 입니다. 아래의 코드를 통해 사용법을 알아보겠습니다.

public boolean equals(Object anotherObject)

공통점

equals()== 모두 boolean type을 반환합니다.

차이점

  • equals() 메소드는 객체끼리의 내용 자체를 비교합니다.

  • == 연산자는 주소값을 비교합니다.

  String str1 = "123";
  String str2 = str1;
  String str3 = new String("123");
  
  // ==
  System.out.println(str1 == str2); // true
  System.out.println(str1 == str3); // false
  
  
  // equals()
  System.out.println(str1.equals(str2)); // ture
  System.out.println(str1.equals(str3)); // true

따라서 문자열을 비교할 때에는 == 보다는 equals() 를 사용하는 것이 좋습니다.


📌 charAt()

String 타입의 문자열 중 한글자만 char 타입으로 반환한다. 다음으로는 사용법과 예시를 살펴보겠습니다.

	public char charAt(int index)

사용 예시는 다음과 같습니다.


    String myStr = "Hello";
    char result = myStr.charAt(0);
    System.out.println(result); // H

✍ 풀이


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;
        for(int i =0; i< num; i++){
            str = sc.next();

            int cnt =0;
            int result = 0;

            for(int j =0; j< str.length(); j++){
                if(str.charAt(j) =='O'){
                    cnt++;
                    result = result + cnt;

                }
                else cnt =0;

            }

            System.out.println(result);

        }

    }
}

https://hellodoor.tistory.com/68


Reference


profile
I have not failed. I've just found 10,000 ways that won't work. - Thomas A. Edison

0개의 댓글