일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 다이나믹프로그래밍
- 카니발대학교 공대강국
- c#
- 이진 탐색
- 그래픽 디자인
- 큐
- 자료구조
- 택시 기하학
- 우선순위 큐
- 라자냐
- i자형 인재
- 영어
- windows 12
- 배열 리스트
- 코딩테스트
- 스택
- unity engine
- T자형 인재
- 닌텐도 스위치 2
- blender
- 빅오 표기법
- 2025 대한민국 채용박람회
- VRoid Studio
- VPS
- vrm posing desktop
- 브루트포스 알고리즘
- 마인크래프트
- 그리디 알고리즘
- 잴다의 전설 티어스 오브 더 킹덤
- 시작
Archives
- Today
- Total
WalkerJei's Lifelog
백준알고리즘 5597번 과제 안 내신 분..? C# 본문
세부 정보
- 사이트: 백준알고리즘
- 번호: 5597
- 문제명: 과제 안 내신 분..?
- 언어: C#
- 분류: 구현
- 비고: 원문이 일본어인 문제
문제
X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다.
교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.
입력
입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다.
출력
출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다.
풀이
TryParse()를 이용하면 입력을 받은 값을 다른 곳에 대입할 때 예외 발생이 없다.
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
// 30명의 학생들의 과제 제출 여부
int [] submit = new int[30];
// 과제를 제출한 28명의 학생 번호 입력
for (int i = 0; i < 28; i++)
{
// 번호를 입력하면 예외 발생 없이 submit 배열에 값을 변환할 수 있다.
int.TryParse(sr.ReadLine(), out int x);
submit[x - 1] = 1;
}
// 과제를 제출하지 않은 2명의 학생 번호 출력
for (int i = 0; i < 30; i++)
if (submit[i] == 0)
sw.WriteLine(i + 1);
sr.Close();
sw.Close();
후기
이러한 문제를 해결하는 방법이 TryParse() 함수라는 것을 피드백을 통해서 알았다. 이전까지만 해도 푸는 방법을 찾지를 못해 미루었던 문제였는데 오늘은 이 문제를 어떻게 해결할 지를 알고 가는 차원에서 접근했다. 그렇게 1차원 배열 단계의 문제 10개 중 9개를 풀었다.
원문이 일본어인 관계로 이 문제는 한국어로 번역된 버전으로 기재했다.
'소프트웨어 개발 > 코딩테스트(기성 문제)' 카테고리의 다른 글
백준알고리즘 2745번 진법 변환 C# (0) | 2025.04.21 |
---|---|
백준알고리즘 2455번 지능형 기차 C# (0) | 2025.04.20 |
백준알고리즘 1100번 하얀 칸 C# (0) | 2025.04.18 |
백준알고리즘 11656번 접미사 배열 C# (0) | 2025.04.17 |
백준알고리즘 1427번 소트인사이드 C# (1) | 2025.04.17 |