250x250
Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- date
- html
- JPA
- priority_queue
- string
- Properties
- 스택
- sql
- List
- alter
- dfs
- 큐
- NIO
- GC로그수집
- 리소스모니터링
- Calendar
- spring boot
- union_find
- 힙덤프
- math
- Union-find
- 스프링부트
- set
- deque
- Java
- javascript
- scanner
- map
- CSS
- BFS
Archives
- Today
- Total
매일 조금씩
백준 10808번: 알바벳 개수 본문
728x90
반응형
알파벳 아스키코드를 활용한 코딩이였다.
ㄹ
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int s[26]; //main함수 안에 선언하면 오류남
int main(void) {
ios_base::sync_with_stdio(0);
cin.tie(0);
string str;
cin >> str;
for (int i = 0; i < str.size(); i++) {
s[str[i] - 'a']++; //A-Z : 65-90, a-z : 97-122
//a가 제일 작은수여서 a를 뺀수가 알파벳에 해당하는 배열인덱스됨
}
for (int i = 0; i < 26; i++) {
cout << s[i] << " ";
}
return 0;
}
배열을 전역으로 선언한 이유..
전역변수는 자동 0으로 초기화 되지만
지역변수는 안됨.
잡상식까지 알게된 문제임
C++에서는 int s[26] = {};
이렇게만 해도 알아서 초기화 되는데
C에서는 int s[26] = {0}; 이런식으로 하나라도 초기화 시켜놔야 나머지가 0으로 초기화됨
##그냥 변수 만들면 첨어ㅔ 초기화시키는 습관 들여놓기 ..
배열 만들때 예를 들어 (알파벳 관련문제 제외) 26크기가 필요하면 그래도 30으로 여유 있게 선언 해놔야 함
--> 가끔씩 메모리 문제로 인덱스 초과해서 들어가는 경우가 있음!
**** C언어의 경우 꿀팁 ****
_getch 함수를 사용하면 시간, 메모리 훨씬 절약 가능.
C++에서의
1. 입력한다
2. string타입 변수에 입력한걸 저장한다
3. for문 돌려서 알파벳 확인
을
1. 입력한다
2. s[입력한알파벳-'a']++;
로 가능 하다.
_getch 함수가 입력받은걸 그대로 버퍼에 남기는 함수인데
따로 char 같은 변수 선언할 필요도 없어서
시간, 메모리가 부족할때 _getch 함수를 쓰거나 scanf("%c", &input); 이런식으로
char 변수 하나에만 입력받아서 돌리는 방법을 써야한다.
728x90
반응형
'알고리즘' 카테고리의 다른 글
백준 1919번: 애너그램 만들기 (0) | 2020.01.19 |
---|---|
백준 2857번: FBI (0) | 2020.01.18 |
백준 5622번: 다이얼 (0) | 2020.01.18 |
백준 2953번: 나는 요리사다 (0) | 2019.12.15 |
[C++] 백준 2823번: 유턴 싫어 (0) | 2019.12.08 |