반응형
DoZZang
Do IT
DoZZang
전체 방문자
오늘
어제
  • Programming
    • Git
    • Web
    • 기타
    • Python
      • CodeUp
    • Math
    • Algorithm
    • Baekjoon
    • C,C++
    • Life
      • 독서
      • Just
      • 영화

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DoZZang

Do IT

[C] 백준 5597번 : 과제 안 내신 분..?
Baekjoon

[C] 백준 5597번 : 과제 안 내신 분..?

2023. 1. 11. 09:59
반응형

https://www.acmicpc.net/problem/5597

 

5597번: 과제 안 내신 분..?

X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데,

www.acmicpc.net

	#define _CRT_SECURE_NO_WARNINGS
	#include <stdio.h>

	int main() {
		int n[30];
		int d;
		int temp[2];
		int count = 0;

		for(int i = 0; i < 30; i++) {
			n[i] = i + 1;					// 1 ~ 30까지 배열에 선언
		}

		for (int i = 0; i < 28; i++) {
			scanf("%d", &d);
			for (int j = 0; j < 30; j++) {
				if (n[j] == d) {n[j] = 0;}		//배열의 원소가 입력 받은 수와 같다면 0으로 초기화
			}
		}
		for (int i = 0; i < 30; i++) {
			if (n[i] != 0) { 
				temp[count] = n[i];				//최솟값을 뽑아내기 위한 과정
				count++;
			}
		}
		if (temp[0] > temp[1]) { printf("%d\n%d", temp[1], temp[0]); }
		else { printf("%d\n%d", temp[0], temp[1]); }		//최솟값이 먼저 출력되게
		
			return 0;
		}

☞풀이 전

출력에 있어 작은 수부터 출력하라는 조건을 못 봐 틀렸었다.

정렬을 하기에는 원소의 수가 고작 2개였기 때문에

int형 배열을 하나 선언해주어 직접 비교하는 방식으로 코드를 구상했다.

 

☞풀이 후

풀긴 풀었는데 코드가 지저분하고 비효율적이여 분명 더 좋은 방법이 있지 않을까 싶었는데

꽤 생각해도 떠오르지 않아 이대로 제출했었다.

아니나 다를까 정답이라고 부를만한 코드가 존재했다.

 

☞다른 사람의 코드

 

#include <stdio.h>

main() {
	int check[30] = { 0, };		//과제 제출한 학생을 체크하는 배열
	for (int i = 0; i < 28; i++) {	//과제 제출한 학생 체크
		int n;
		scanf("%d", &n);
		check[n - 1] = 1;
	}
	for (int i = 0; i < 30; i++)	//과제 미제출 학생 출석번호 출력
		if (check[i] == 0)
			printf("%d\n", i + 1);
}
출처 : https://lgana1021.tistory.com/37

배열의 각각의 index의 값에 집중하는 것이 아닌 배열의 index에 조금만 집중했어야했다.

입력을 int형 정수 28개를 받는다 할 때 기민하게 반응했어야 했다.

배열의 각각의 값이 아닌 index에도 집중해보자.

반응형
저작자표시 (새창열림)

'Baekjoon' 카테고리의 다른 글

[C] 백준 10951번 : A + B - 4  (2) 2023.01.13
[C] 백준 9498번 : 시험 성적  (0) 2023.01.11
[C] 백준 1008번 : A/B  (0) 2023.01.10
[C] 백준 2908번 : 상수  (0) 2023.01.09
[C] 백준 1065번 : 한수  (0) 2023.01.09
    'Baekjoon' 카테고리의 다른 글
    • [C] 백준 10951번 : A + B - 4
    • [C] 백준 9498번 : 시험 성적
    • [C] 백준 1008번 : A/B
    • [C] 백준 2908번 : 상수
    DoZZang
    DoZZang
    과정은 힘들지만 성장은 즐겁습니다.

    티스토리툴바