더 좋은 문제 풀이가 있거나 궁금하신 점이 있다면 편하게 댓글 남겨주세요!
이번 문제에서는 Scanner의 메서드에 대한 이해가 중요했던 문제입니다. 그렇지 않다면 입력 과정에서 오류가 발생했을 것입니다. 그렇다면 먼저 [백준/JAVA] 문자열 - 11654번 아스키 코드 를 통해 Scanner의 입력 메서드에 대해 알아보도록 하겠습니다.
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에 저장됨
int num = sc.nextInt();
sc.nextLine(); //개행문자 Enter를 제거하기 위해 추가
Stirng str = sc.nextLine();
int num = Integer.parseInt(sc.nextInt());
Stirng str = sc.nextLine();
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()
를 사용하는 것이 좋습니다.
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