동아리/Early-알튜비튜

알튜비튜_06_일차원배열(2)

대학기록 2024. 11. 12. 10:17

백준 10807 - 개수세기
 

 
 
풀이과정
1) 정수 N을 입력받고, 배열 array[N]을 for문을 이용해서 N개만큼의 정수를 입력받는다. 
2) 찾으려는 정수 v를 입력받는다.
3) for 문과 if문을 활용해서 배열 array[N] == v라면 count +=1 ;를 해준다. 
4) 마지막으로 count를 출력한다. 
 
 
 
 
 
C언어로 풀어보자.
 
#include <stdio.h>
int main() {
    int N;
    scanf("%d", &N);
    int array[N]; 
    for (int i = 0; i < N; i++) {
        scanf("%d", &array[i]);
    }
 
    int v;
    scanf("%d", &v);  // 찾으려는 정수
 
    int count;    
    for (int i = 0; i < N; i++) {              // v가 몇 개인지 세기
        if (array[i] == v) {
            count += 1;
        }
    }

    printf("%d\n", count);
    return 0;
}
 
 
 
 
 
 
이제 Java로 풀어보자. 
 
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int N = sc.nextInt();  
        int[] numbers = new int[N];
        for (int i = 0; i < N; i++) {
            numbers[i] = sc.nextInt();
        }
        int v = sc.nextInt();                            // 찾으려는 정수
               
        int count = 0;                                     // v가 몇 개인지 세기
        for (int i = 0; i < N; i++) {
            if (numbers[i] == v) {
                count++;
            }
        }

        System.out.println(count);
    }
}
 
 
 
 
Python으로도 풀어보자.
 
N = int(input())                                                # 정수의 개수
numbers = list(map(int, input().split()))           # N개의 정수
v = int(input())                                                 # 찾으려는 정수

count = numbers.count(v)                               # v가 몇 개인지 세기

print(count)
 
 
 
 
 
 
 
 
 
백준 5597 - 과제 안 내신 분 ..?
 

 
 
풀이과정
1) 첫번쨰 for문에서, scanf로 28명의 학생을 입력받고 제출한 학생은 1로 표시된다. 
2) 두번째 for문에서는, 제출하지 않은 학생의 번호를 출력한다. '0'인 경우 제출하지 않은 학생이다. 
* 인덱스가 0부터 시작하기 때문에 학생번호에 맞추기 위해서 i+1 을 사용함.
 
 
 
 
 
C언어로 풀어보자.
 
#include <stdio.h>
int main() {
    int submitted[30] = {0};                                // 제출한 학생을 체크할 배열 
                          
    int number;
    for (int i = 0; i < 28; i++) {
        scanf("%d", &number);
        submitted[number - 1] = 1;                      // 제출했음을 표시
    }

    for (int i = 0; i < 30; i++) {                             // 제출하지 않은 학생 번호 출력
        if (submitted[i] == 0) {
            printf("%d\n", i + 1);                            //인덱스가 0부터 시작하기 때문에 학생번호에 맞추기 위해서 i+1 을 사용함.
        }
    }
}
 
 
 
 
 
Java로도 풀어보자.
 
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      int[] submitted = new int[31];

      for(int i=1; i<29; i++) {
         int number = sc.nextInt();
         submitted[number] = 1;
     }
     for(int i=1; i<submitted.length; i++) {
       if(submitted[i]!=1)
         System.out.println(i);
     }
   
    sc.close();
  }
}
 
 
 
 
 
Python으로도 풀어보자.
 
# 1부터 30까지의 출석번호를 가진 학생 리스트
all_students = set(range(1, 31))

# 28명의 제출한 학생 번호를 입력받아 차집합으로 미제출자 찾기
for _ in range(28):
    all_students.remove(int(input()))

# 남은 두 명의 학생 번호를 정렬하여 출력
missing_students = sorted(all_students)
print(missing_students[0])
print(missing_students[1])
 
 
 
 
 
 
 
 
백준 3052 - 나머지

 
 
풀이과정
1) 10개의 정수를 입력받아야 한다. 그리고 그것을 'temp'라는 변수에 저장한다. 
2) num[temp % 42] = 1;
--> 배열의 인덱스로 사용하여 해당 위치의 값을 1로 설정한다. ('0'이 아닌값으로 설정하면 된다.)
--> 이렇게 하면 입력된 정수의 나머지 값이 중복되지 않도록 기록된다. 
ex) 예를 들어서 입력된 숫자가 83이면, 83 % 42 = 41이므로 num[41]의 값이 1이 된다. 
3) num[i]의 값이 1이면 count의 값을 증가시킨다. 
--> 이는 해당 나머지 값이 최소 한 번은 입력에 나타났다는 의미이다. 
 
 
 
 
 
C언어로 풀어보자
 
#include <stdio.h>
int main() {
    int num[42] = {0};
    int temp;
    for (int i = 0; i < 10; i++) {
        scanf("%d", &temp);
        num[temp % 42] = 1;
    }
    
    int count = 0;
    for (int i = 0; i < 42; i++) {
        if (num[i] == 1) {
            count += 1;
        }
    }

    printf("%d\n", count);
    return 0;
}
 
 
 
 
 
Java 로 풀어보자.
 
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        boolean[] num = new boolean[42]; // 0 ~ 41
        int count = 0;

        for (int i = 0; i < 10; i++) {
            int temp = sc.nextInt() % 42;

            if (!num[temp]) { // num[temp]가 0인 경우에만(처음 등장) () 안이 1이 됨
                num[temp] = true;
                count += 1;
            }
        }

        System.out.println(count);

        sc.close();
    }
}
 
 
 
 
 
Python으로 풀어보자.
 
import sys
input = sys.stdin.readline

num = []

for i in range(10):
    temp = (int(input()))%42

    if temp not in num:
        num.append(temp)

print(len(num))