2023. 9. 9. 23:47ㆍ코딩테스트
문제
A 배열: 5 4 3 2 1
S 배열: 5 9 12 14 15
여기에서 A배열이 인덱스가 1부터 시작할 때, 2번째부터 4번째 요소의 합을 구하려면 구간 합을 이용하면 구할 수 있다
S[4] - S[2-1] = 14 - 5 = 9
A[2] + A[3] + A[4] = 4 + 3 +2 = 9
1, 2 , 3 -> stringTokenizer 에 새로운 객체를 생성한다. 왜 똑같은 변수에 3번이나 객체를 새로 생성할까?
3번 객체 생성을 하는 이유는 한 줄에 데이터를 입력할 때 입력한 데이터를 분리하기 위해 StringTokenizer를 사용하는데 이 데이터를 3줄에 입력하기 때문에 데이터를 입력할 때 StringTokenizer 객체를 생성하는 것이다.
첫 줄에 데이터의 갯수, 질의 갯수를 입력해야 한다. 이 경우 (데이터갯수 질의갯수) 이런 방식으로 한 줄에 2개의 데이터를 띄워서 입력해야 한다. 실제로 데이터를 입력하는 것은 4,5,6,7,8처럼 stringTokenizer.nextToken()을 사용하고
3줄을 입력하는데 1줄마다 입력하기 전에 stringTokenizer 객체를 생성한다. stringTokenizer 객체를 생성하는 이유는 데이터 사이를 분리하기 위해 줄마다 stringTokenizer 객체를 생성한다.
다음 두번째 줄에 합을 구할 대상 배열을 데이터 갯수만큼 입력한다.
23번 줄이 대상배열을 입력하는 부분이다. 인덱스가 1부터 시작하지만 처음에 합배열인 S[]을 선언할 때 S[suNo + 1]로 선언하고 for()에서 1부터 반복하므로 S[1] = S[0] + (입력 데이터)가 된다. S[0]아무 입력없이 S[1]부터 데이터를 입력했다. 아무 데이터가 없고 int형 배열이므로 S[0]에 0이 들어간다.
마지막 세번째 줄에 질의 개수를 입력해야 한다. 입력된 질의 개수만큼 시작인덱스와 끝 인덱스를 입력해야 하므로 for() 반복문 안에 stringTokenizer를 new 연산자로 새 객체를 생성하여 입력을 받았다.
실행결과
'코딩테스트' 카테고리의 다른 글
StringTokenizer 이용하여 데이터 입력받기 (0) | 2023.10.25 |
---|---|
002 평균구하기 (0) | 2023.09.03 |
001 숫자의 합 구하기 (0) | 2023.09.03 |
백준_체스 피스 계산 (0) | 2023.08.11 |