문제풀이/일일연습문제

일일문제 : 1번째- 221213 [12-2-화] - 갯수 구하기, 해당값 위치 구하기

Mo_bi!e 2022. 12. 13. 13:09

[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 라는것을 잊으면 아니된다.