| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- C++
- Unity
- 백준
- 리그오브레전드턴제게임
- 유니티
- 바킹독
- c#
- 티스토리챌린지
- C#문법
- unity3d게임만들기
- 백준 구현문제
- unity게임
- c#코딩기초트레이닝
- 유니티게임만들기
- unity게임만들기
- c++ 백준
- c#기본문법
- c++ solved.ac
- unity3dservival
- solved class 2
- 백준 C++
- 백준코테
- 유니티공부
- 바킹독알고리즘
- 백준 c++ 공부
- 백준코딩테스트
- c#기초문법
- 유니티서바이벌게임만들기
- c#코테
- 오블완
- Today
- Total
나 개발자 진짜 되냐?
바킹독 0x03 문제1 - 알파벳 개수 / 백준 10808번 본문

드! 디! 어! 4월부터... 풀던 0x02를 마치고 03으로 왔다.
몇개월 만이지..
ㅋㅋㅋㅋㅋ너무 게을렀나? 싶기도하고
바빴다는 핑계를 좀 대며..
그의 이름은 배열....
참 싫은 그대
풀어봅시다!

알파벳 소문자로만 이루어진 S 단어..

일단 내가 지금 당장 떠오르는 방법은..
S를 입력받아서 배열 한개한개에 넣어주고,
a부터 z까지 각자의 배열을 ..만들어주고
.. 그다음에 어떡하지?......
.........ㅋㅋㅋㅋㅋ
그다음에 a부터 z까지 카운트할 수 있는 배열을 또 만들어주고..
그래도 되려나? 모르겠다
일단 계획은 이렇다.
계획은 틀어졌다.
문법을 모르기 때문

ㅋㅋㅋㅋㅋㅋㅋ
문자열...인데 문자열을 어떻게 받는 거지?
문자열로 하면 안 되는 건가? 벌써 마음이 꺾인다.

뭘 쓰고 있는 걸까..
포기하고 답을 봤다.
오.. 일단 스트링은 맞았다.
ㅋㅋㅋㅋㅋㅋㅋㅋ.. 시무룩
그리고 신기한 문법을 봤다
for (auto c: s)
문자열 s안의 글자를 하나씩 꺼내어 c에 담아 반복한다.
이다.
s가 4 글자면 총 4번 반복하게 된다.
오... 이거 좋은데?
만약에 for문을 길게 쓰게 되면 어떻게 쓸 수 있을까.
for (int i = 0; i < s.size(); i++)
{
char c = s[i];
freq[c - 'a']++;
}
size나 length 쓸 때
괄호 꼭 써줘야 한다! 라이브러리여서 그렇다고 한다.
문자열의 경우 문자배열이라고 한다.
그래서 저렇게 문자열에 [i]를 써도 된다!
편한 문법이라고 한다.
반드시 써야 하는 문법은 아니라고 하니
자주 써먹을 수 있도록 숙지하자.

답은 이러했다.
fill을 배우면서 이번에 활용해보고 싶어서 적어보았다.
답이 틀리지 않은 거 보아.. 이것도 맞는 식이지 않을까? 생각이 들었다.
꼭 알아야 할 문법
"a" / 'a' 는 다르다.
" " 는 문자열을 의미하며,
' ' 는 한 문자만 의미한다.
그래서 아스키코드 쓸 때도 "a" 하면 사고 난다.
char "a" 해도 안된다!
"" 자체가 문자열을 의미해서 아까 말했듯 문자열은 문자배열들이기 때문에
다르다.
하지만 'a' 는 하나의 문자이기 때문에
우리 컴퓨터는 이 문자가 숫자로 들어가져서
- 'a' 하는 것이 - 97 하는 것과 같다!
for ( auto c : s )
이 친구는 auto도 중요하긴 하다.
자주 쓰면 위험한 친구이기도 하고.
자료형을 알아서 지정해 주는 똑 부러지는 녀석이다.
그리고 c : s
는 s의 개수만큼 s값을 c로 옮겨주는 친구이다.
오..
그래서
for문으로 개수만큼 출력할 때
for ( int count : freq )
cout << count << ' ';
해줘도 freq가 26개고
그 안의 값을 count에 넣는 거라서
for ( int i = 0; i < 26 < i++)
cout << freq [i] << ' ' ;이랑 같게 된다.
휴.. 분명 쉬울 줄 알았는데 새앵각 보다 어려운 듯
편하다고 해서 익숙해지려고 했는데..
마지막 출력용 for문 쓸 땐 정석으로.... 써야 할지도?..
어렵다 어려워.
c - 'a'
아까도 적었지만 컴퓨터는 아스키코드로 외우기 때문에
c의 문자열 하나에다가 'a'를 빼게 되면
어떠한 값이 나오게 된다.
그것이 인덱스를 표현하기 딲! 이라는것!
그 값을 freq [ 여기에 ] 넣어주게 되면 된다.
이게 뭐라고 머리가 터질거같은지..
정말 정말 어렵다.
답지 보고 이해하는데 한 시간이 넘게 썼다.
문제를 읽고... 답지를 본 시간은 5분이 채 안 됐는데 말이다..ㅎㅋ
내가 다음에 돌아와서 풀때
for ( auto c : s ) 에 대해 더 잘 쓸 수 있었으면 좋겠다.
'C++을 시작해봐요! > 알고리즘을 공부해봐요!' 카테고리의 다른 글
| 바킹독 0x03 문제3 - 방 번호 / 백준 1475번 (0) | 2025.09.23 |
|---|---|
| 바킹독 0x03 문제2 - 숫자의 개수 / 백준 2577번 (0) | 2025.09.17 |
| 바킹독 0x02 문제27 - 최댓값 / 백준 2562번 (0) | 2025.09.15 |
| 바킹독 0x02 문제26 - 별찍기 9 / 백준 2446번 (0) | 2025.09.03 |
| 바킹독 0x02 문제25 - 별찍기 8 / 백준 2445번 (1) | 2025.08.27 |