본문 바로가기

Algorithm197

[백준 1475] 방 번호 1475번: 방 번호 (acmicpc.net) 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 정답 풀이 #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); // ans = 1로 둠으로서 N = 0일때에 대한 예외처리가 자연스럽게 가능해짐 int N, a[10] = {}, ans = 1; cin >> N; // 자리수 추출 while(N){ a[N%10]++; N /= 10; } for(int i = 0; i < 10; i++){ if(i == 6 || i == 9) continue; ans = max(ans, a[i.. 2022. 8. 9.
[백준 2577] 숫자의 개수 2577번: 숫자의 개수 (acmicpc.net) 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 배운 것 int to string: string s = to_string(res); 정답 풀이1 #include #include using namespace std; int main(int argc, const char *argv[]) { /* 0으로 초기화를 해야한다. 아니면 garbage value, 즉 쓰레기 값이 들어있게 된다. 이 때 0으로 초기화 하는 방법은 {} 괄호만 쳐주거나, {0,}, {0} 방식이 있다. */ int count[10] = {}; i.. 2022. 8. 9.
[실전 알고리즘] 배열 정의와 성질 배열: 메모리 상에 원소를 연속하게 배치한 자료구조 배열의 성질 1. O(1)에 k번째 원소를 확인/변경 가능 2. 추가적으로 소모되는 메모리의 양(=overhead)가 거의 없음 3. Cache hit rate가 높음 4. 메모리 상에 연속한 구간을 잡아야 해서 할당에 제약이 걸림 기능과 구현 전체를 특정 값으로 초기화 시키기: algorithm 헤더의 fill 함수 fill(a,a+21,0); for(int i=0;i 2022. 8. 8.
[백준 10808] 알파벳 개수 10808번: 알파벳 개수 (acmicpc.net) 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net 배운 것 - 내 풀이에서는 이렇게 s[i] 째로 넣어줬는데 s[i]는 알파벳이 들어가는 것이 아니라 아스키 코드상의 숫자로 들어간다. 그리고 인덱스는 0부터 시작하니까 s[i] - 'a'를 해줘야 함 for(int i=0;i> s; for(auto c : s) freq[c-'a']++; for(int i = 0; i < 26; i++) cout 2022. 8. 8.
[실전 알고리즘] 기본적인 코드작성요령 코딩테스트 필요 역량 배경지식, 문제해결능력, 구현력 기초 코드 작성 요령 문제를 보고 시간 복잡도를 먼저 생각하자 정수 자료형 int, long long 형 생각하기 Integer Overflow 실수 자료형 float : 4 byte double : 8 byte 1. 실수의 저장/연산 과정에서 반드시 오차가 발생할 수 밖에 없다 2. double에 long long 범위의 정수를 함부로 담으면 안된다 3. 실수를 비교할 때는 등호를 사용하면 안된다(오차범위 존재) STL과 함수 인자 구조체, STL 모두 값이 복사되어서 원본에 영향 주지 않음 표준 입출력 - 공백이 포함된 문자열을 받을 땐 getline을 쓰자. 대신 이건 type이 C++ string이어야 함 - scanf/printf와 다르게 c.. 2022. 8. 8.
[백준 1159] 농구 경기 1159번: 농구 경기 (acmicpc.net) 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net 배운 것 정답코드 #include using namespace std; int n, cnt[26]; string s, ret; int main(){ cin >> n; for(int i = 0; i > s; cnt[s[0] - 'a']++; } for(int i = 0; i = 5) ret+= i + 'a'; if(ret.size()) cout 2022. 7. 27.