Dev dreamer 2023. 2. 3. 17:13

 

💡 문제

OX 문제는 맞거나 틀린 두 경우 답을 가지는 문제를 말한다.

 

여러개의 OX 문제로 만들어진 시험에서 연속적으로 답을 맞히는 경우에는 가산점을 주기 위해

 

처음 문제가 맞거나 앞에 문제가 틀리고 맞는 경우에 1점

 

앞에 문제가 맞고 문제가 맞는 경우 2점 그 뒤에 문제까지 맞추면 3점이다.

 

 

맞은 문제를 1 틀린 문제를 0 이라고 했을때 점수표이다.

총 10점이다.

 

 

⚡ 입력

 

첫줄에는 100이하의 자연수

 

둘째 줄에는 채점 결과를 나타낸 1 과 0 이 빈칸을 사이에 두고 N개 주어진다.

 

➡입력 예시

 

10

 

1 0 1 1 1 0 0 1 1 0

 

➡ 출력 예시

 

총 점수 

10

 

 

💡 1. 나의 생각 및 풀이 과정


생각보다 쉽게  푼듯 하다.

 

StringTokenizer 입력 받고 배열에 nextToken()으로 배열에 담을때 hasMoreTokens 사용하는거 기억하자.

while 에 담아서 쓰면 된다. boolean반환하고 Token 이 남아 있으면 true 없으면 false

 

arr에 String 정보값들을 solution에 보내고

1이 연속으로 나오면 점수가 올라가고 틀리면 다시 0부터 점수를 매기는 구조이기 때문에

cnt 라는 int 변수를 하나 선언했다

for 문 안에 if 문으로 arr의 값이 1이면 cnt 가 1씩 계속 증가하는 구조이다.

 

여기서 또!! string 을 비교하는데 자꾸 ==으로 비교해서 오류가 났다.

string 비교는 equals 제발좀 기억하자..!!!

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {
	
	public int solution(ArrayList<String> arr, int num) {
		
		int answer=0;
		int cnt=0;
		
		for(int i =0; i<arr.size(); i++) {
		
			if(arr.get(i).equals("1")) {
				cnt++;
				answer+=cnt;
			}else {
				cnt=0;
			}		
		}
		return answer;
	}

	public static void main(String[] args) throws NumberFormatException, IOException {
		Main T = new Main();
		ArrayList<String> arr = new ArrayList<>();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int num = Integer.parseInt(br.readLine());
		String str = br.readLine();

		StringTokenizer st = new StringTokenizer(str);

		while (st.hasMoreTokens()) {
			arr.add(st.nextToken());
		}
		System.out.println(T.solution(arr, num));

	}
}

 

💡 2. 강사님 풀이 


거의 비슷한 방법으로 푼듯 .

 

대신 강사님은 int 로 받아서 ==으로 바로 비교가 가능함.

 

 

 

 

 

 

코테 관련해서 많이 걱정됐었는데 강의를 통해 푸는 방법들을 배우니 이 시간이 즐겁습니다.

진짜 기능하나하나 다양한 방법으로 잘 가르쳐주십니다.

출처 : 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 대시보드 - 인프런 | 강의 (inflearn.com)