일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 카니발대학교 공대강국
- 그리디 알고리즘
- 영어
- windows 12
- 잴다의 전설 티어스 오브 더 킹덤
- 코딩테스트
- 라자냐
- 빅오 표기법
- 닌텐도 스위치 2
- VPS
- c#
- VRoid Studio
- 2025 대한민국 채용박람회
- vrm posing desktop
- 이진 탐색
- 우선순위 큐
- 스택
- unity engine
- 자료구조
- blender
- 브루트포스 알고리즘
- 배열 리스트
- 택시 기하학
- 그래픽 디자인
- 큐
- 다이나믹프로그래밍
- 시작
- T자형 인재
- i자형 인재
- 마인크래프트
Archives
- Today
- Total
WalkerJei's Lifelog
백준알고리즘 10871번 X보다 작은 수 C# 본문
세부 정보
- 사이트: 백준알고리즘
- 번호: 10871
- 문제명: X보다 작은 수
- 언어: C#
- 분류: 구현
- 비고:
문제
정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
출력
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
풀이
배열에 입력을 할 때 과정이 있으며 다음과 같다.
- Console.ReadLine()을 통해 문자열을 입력받는다.
- Split()을 통해 입력받은 문자열을 공백으로 구분한다.
- Select(int.Parse)를 통해 공백으로 구분한 문자열들을 정수로 바꾼다.
- ToArray()를 통해 정수로 바꾼 문자열 배열들을 input 배열에 복사해서 삽입한다.
// 입력할 숫자의 총 개수와 비교에 사용할 수를 입력받는다.
int[] input = Console.ReadLine().Split().Select(int.Parse).ToArray();
// 숫자들을 배열에 입력받는다
int[] numArray = Console.ReadLine().Split().Select(int.Parse).ToArray();
// 배열 내의 숫자들이 비교 대상보다 작은 경우에만 그 수를 출력한다.
for(int i = 0; i < numArray.Length; i++)
if (numArray[i] < input[1])
Console.Write("{0} ", numArray[i]);
후기
사실 이 문제를 풀 때 정답은 정상적으로 나왔지만 시간 초과로 실패한 코드가 있다.
// 입력할 숫자의 총 개수와 비교에 사용할 수를 입력받는다.
string testCase = Console.ReadLine();
// 입력받은 숫자의 총 개수와 비교에 사용할 수를 변수에 할당한다.
int numAmount = Convert.ToInt32(testCase.Split()[0]);
int compareNum = Convert.ToInt32(testCase.Split()[1]);
// 숫자들을 입력받을 변수를 할당한다.
int[] numArray = new int[numAmount];
// 숫자들을 입력한다.
string inputNumber = Console.ReadLine();
// 입력받은 숫자들을 배열에 저장한다.
for (int i = 0; i < numArray.Length; i++)
numArray[i] = Convert.ToInt32(inputNumber.Split()[i]);
// 배열에 저장한 수들을 비교에 사용할 수와 비교해 작을 때만 그 수를 출력한다.
for (int i = 0; i < numArray.Length; i++)
if (numArray[i] < compareNum)
Console.Write(numArray[i] + " ");
오늘 배운 것은 배열 입력을 한 줄의 코드만으로 처리하는 방법이었다. 풀이에 써놓은 소스 코드대로 하면 선언해야 할 변수의 수도 줄일 수 있고 번거로운 변수 타입(정수, 실수, 문자, 문자열 등) 변환도 간단해진다. 오늘 배운 것을 까먹지 않고 잘 기억해서 다음 문제 풀이에도 사용해 볼 수 있어야 한다.
또한 앞으로는 30분의 제한 시간 중 29분까지는 풀고 1분 남았다면 컴파일이 되든 안 되는, 값이 이상하게 나오더라도 무조건 제출해서 채점하도록 방식을 바꿨다. 실패한 이유를 남겨 두어서 체계적으로 왜 실패했는지 분석해야 하기 때문이다.
'소프트웨어 개발 > 코딩테스트(기성 문제)' 카테고리의 다른 글
백준알고리즘 10988번 팰린드롬인지 확인하기 C# (0) | 2025.03.14 |
---|---|
백준알고리즘 2675번 문자열 반복 C# (0) | 2025.03.13 |
백준알고리즘 8958번 OX퀴즈 C# (1) | 2025.03.12 |
백준알고리즘 2577번 숫자의 개수 C# (0) | 2025.03.11 |
백준알고리즘 10807번 개수 세기 C# (0) | 2025.03.11 |