일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 배열 리스트
- 이진 탐색
- blender
- T자형 인재
- 그리디 알고리즘
- 큐
- 다이나믹프로그래밍
- 코딩테스트
- 자료구조
- VRoid Studio
- 마인크래프트
- 빅오 표기법
- 택시 기하학
- unity engine
- 카니발대학교 공대강국
- 라자냐
- 우선순위 큐
- 닌텐도 스위치 2
- 영어
- 스택
- c#
- 브루트포스 알고리즘
- 시작
- i자형 인재
- windows 12
- VPS
- vrm posing desktop
- 2025 대한민국 채용박람회
- 잴다의 전설 티어스 오브 더 킹덤
- 그래픽 디자인
- Today
- Total
WalkerJei's Lifelog
백준알고리즘 10809번 알파벳 찾기 C# 본문
세부 정보
- 사이트: 백준알고리즘
- 번호: 10809
- 문제명: 알파벳 찾기
- 언어: C#
- 분류: 구현, 문자열
- 비고:
문제
알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
출력
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.
만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.
풀이
아스키 코드를 알면 편하게 해결할 수 있다. 0은 아스키 코드로 48, A는 아스키 코들 65, a는 아스키 코드로 97이라는 것을 상식으로 기억해 두자.
// 문자열 입력을 받는다
string input = Console.ReadLine();
// a부터 시작한다
char alphabetStart = 'a';
for(int i = 0; i < 26; i++)
// 입력한 문자열의 문자들과 알파벳을 비교한다.
Console.Write(input.IndexOf((char)(alphabetStart + i)) + " ");
후기
지난주에 수학 분류를 했으니 이번 주는 구현 분류를 선택했다. 이번 문제도 IndexOf의 존재를 몰라서 못 풀었지만 IndexOf가 무엇을 하는 지 알아볼 수 있었다. 코딩테스트 문제를 풀면서 소프트웨어 개발자가 가지고 있어야 하는 상식을 쌓을 수 있는 것 같다. 문제를 피드백하는 과정에서 C# System 네임스페이스 문서에도 들어가 보았다. 제공하는 클래스가 아주 많아서 알아두면 적절한 타이밍에 소스 코드 문제를 클래스 가져다 쓰는 것으로 해결할 수 있다.물론 방대한 라이브러리를 통달하는 것은 불가능하다. 이러한 점 때문에 필자는 관리자가 팀의 성장과 조직의 성공을 위해 부하들에게 업무를 위임할 필요가 있음을 인정했다.
왜 그렇게 되었나면 위임을 받는 부하들 입장에서도 실무를 전문적으로 파 왔음에도 그 실무에 사용하는 도구들의 기능이 너무 많아서 다 써보지도 못하기 때문이다. 이 글을 쓰고 있는 지금도 포토샵, 엑셀, C++ 같은 도구들의 신기능은 자꾸 생겨나고 있을 것이다. 저걸 다 배우기에 벅차다 보니 자기가 아는 기능 수십가지 위주로 쓰다가 늙어 죽을 때 유언으로 "아직 써보지 못한 기능이 많이 남았는데..." 라는 말이 나올 기세다. 무엇보다 위임을 받는 부하는 어떤 업무에서는 상사보다 뛰어나도 대부분의 나머지 부분은 상사보다 부족할 수 있다.
돌아와서, 이번 주는 분류를 바꾸고 여기에 적응해 나가는 초석을 쌓았다. 대학 다녔을 때 어떤 교수분은 수많은 프로그램, 알고리즘 문제들과 부딪치면서 쌓아온 것들로 최적의 프로그램을 짜는 역량을 갖춘 노력파라고 말씀하신 적이 있었는데 내가 딱 노력파에 해당하는 것 같다. 천재적인 재능 대신 끈기를 무기로 뛰어난 역량을 발휘해야 한다.
C# System 네임스페이스 문서
System 네임스페이스 | Microsoft Learn
'소프트웨어 개발 > 코딩테스트(기성 문제)' 카테고리의 다른 글
백준알고리즘 2577번 숫자의 개수 C# (0) | 2025.03.11 |
---|---|
백준알고리즘 10807번 개수 세기 C# (0) | 2025.03.11 |
백준알고리즘 1094번 막대기 C# (0) | 2025.03.09 |
백준알고리즘 4153번 직각삼각형 C# (0) | 2025.03.08 |
백준알고리즘 2163번 초콜릿 자르기 C# (0) | 2025.03.07 |