[1번]
1. 문제설명
문제 1:
res/data.txt 파일에 다음처럼 빈 공백으로 구분 된 값들이 있다.
20 30 29 39 49 38 10 19 87 29 38 27 8 90 87
문제 1 : 이 값들의 개수를 구하는 코드를 작성하시오.
int count = 0;
{
// 코드를 작성하는 공간
}
Sysout.out.printf(“count is %d\n”, count);
2. 나의 해답
첫번째 방법 : lenth 함수를 이용해서 배열의 크기 구하기
두번째 방법 : 배열의 마지막에 "\n" 을 찾아서 그 순간에 값 구하기
3. 정답 코드
package Test_1;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Test1 {
public static void main(String [] args) throws FileNotFoundException {
int count = 0 ;
//파일입력
FileInputStream fis = new FileInputStream("res/data.txt");
{
Scanner scan = new Scanner(fis);
while(scan.hasNext())
{
int temp = scan.nextInt();
count++;
}
System.out.printf("2 count is %d \n", count);
}
hasnext()로 boolean 으로 리턴하는 값으로 반복한다
이 경우 nextInt()함수는 다음 토큰으로 이동하기위한 수단으로 temp값에 대입해주는 것이고
실질적으로 temp값을 이용하지 않는다.
그 과정에서 count값을 증가 연산자를 이용해서 필요한 count값을 출력한다
4. 보충 및 회고
(1) 보충
1) hasnext()와 nextInt()에 대한 이해 필요
(2) 회고
1) nextLine()의 끝에는 \n 을 제외하고 리턴한다는 것을 알게되었다
2) hasnext()의 경우 boolean 으로 리턴한다는 것을 알게되었다.
3) temp 값은 꼭 이용할필요없이 받아주는 용으로 이용하면 된다.
[2번]
1. 문제설명
이 값들 중에서 가장 큰 값이 무엇인지 출력하는 코드를 작성하시오.
int max = -1;
{
// 코드를 작성하는 공간
}
Sysout.out.printf(“max is %d\n”, max);
2. 나의 해답
{
int max = -1;
FileInputStream fis2 = new FileInputStream("res/data.txt");
Scanner scan = new Scanner(fis2);
String line = scan.nextLine();
String [] tmp = line.split(" ");
int [] num = new int[count];
int tmp2 = 0;
for(int i = 0 ; i < count ; i++) {
num[i] = Integer.parseInt(tmp[i]);
tmp2 = num[i];
if(max < tmp2)
max = tmp2;
}
System.out.printf("max is %d", max);
}
콘솔 : max is 90
3. 정답 코드
거의 동일
4. 보충 및 회고
(1) 보충
1) hasnext 및 nextInt()를 이용해서도 구현이 가능함
(2) 회고
자료구조 초창기 시간에 sorting 을 하는 과정에서 구현했던 것이 생각나서 반가웠다.
[3번]
1. 문제설명
문제 3 : 이 값들 중에 10 을 찾아서 그 위치(인덱스 값)을 출력하시오.
int index = -1;
{
// 코드를 작성하는 공간
}
System.out.printf(“index is %d\n”, index);
2. 나의 해답
{
FileInputStream fis2 = new FileInputStream("res/data.txt");
Scanner scan = new Scanner(fis2);
String line = scan.nextLine();
String [] tmp = line.split(" ");
int [] num = new int[count];
int index = -1;
System.out.println();
for(int i = 0 ; i < count ; i++) {
num[i] = Integer.parseInt(tmp[i]);
if(num[i] == 10) {
index = i;
break;
}
}
System.out.printf("\nindex is %d\n", index);
}
콘솔 : index is 6
3. 정답 코드
동일 다만 2번문제와 마찬가지임
4. 보충 및 회고
(1) 보충
(2) 회고
문제에서 요구하는 출력값이 index 라는것을 잊으면 아니된다.
'문제풀이 > 일일연습문제' 카테고리의 다른 글
일일문제 : 6번째- 221220 [12-3-화] - 1차 함수 (1) | 2022.12.20 |
---|---|
일일문제 : 5번째- 221219 [12-3-월] - 함수화 / 피라미드 (0) | 2022.12.19 |
일일문제 : 4번째- 2212116 [12-2-금] - 보드와 돌 만들기 (0) | 2022.12.16 |
일일문제 : 3번째- 2212115 [12-2-목] - 돌 전환시키기 (0) | 2022.12.15 |
일일문제 : 2번째- 2212114 [12-2-수] - 배열 섞기 (0) | 2022.12.14 |