본문 바로가기

Coding Test

(18)
[C++] 난수 생성 써먹을 때마다 정확히 기억이 안 나서 기록 #include #include ... srand((unsigned int)time(NULL)); int num = rand() % 10; // 0~9 참고🙏😀 https://blockdmask.tistory.com/308
[C++] set, map에서 요소가 있는지 확인 1. if(set.count(x)) // 요소 x가 들어있다. else // X 2. bool is_in = set.find(element) != set.end();
[C++] 문자열을 입력받는 여러 가지 방법 총정리 ✔ (공백 포함) 한 줄씩 입력받기 # 의 getline()을 이용 string str; getline(cin, str); // getline(cin, str, '\n')과 같다 getline(입력스트림 오브젝트, 문자열을 저장할 string객체, 종결 문자); # 의 cin.getline()을 이용 char ch[100]; cin.getline(ch, 100); // cin.getline(ch, 100, '\n')과 같다 cin.getline(변수 주소, 최대 입력 가능 문자수, 종결 문자); 여기서 잠깐! cin.ignore() `cin.ignore()`을 해줘야 한다. cin은 '\n'를 처리하지 않고 입력버퍼에 남겨둔다. geline은 '\n'를 입력버퍼에서 가져와서 처리한다. s2에 '\n'가 ..
[BOJ] 백준 #4673. 셀프 넘버 🎨 문제 문제 링크: https://www.acmicpc.net/problem/4673 알고리즘 분류: 수학, 구현, 브루트포스 난이도: Silver 5 💬 풀이 /////// L26에서 n과 d(n)이 비례하는 건 아니므로 if(n>MAX) break;를 하면 틀린다. 👉🏻 틀린 코드 확인 👩‍💻 코드 C++ #include using namespace std; #define MAX 10001 bool self_num[MAX]; int d(int n) { int res = n; int t = n; while(t) { res += t%10; t /= 10; } return res; } int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); fill_n..
[BOJ] 백준 #3985. 롤 케이크 🎨 문제 문제 링크: https://www.acmicpc.net/problem/3985 알고리즘 분류: 구현 난이도: Bronze 1 더보기 길이 L미터 짜리 롤케이크를 방청객 N명에게 나눠주려고 한다. 1번부터 N번까지의 방청객들은 차례대로 각각 원하는 조각을 범위 조각P부터~조각K까지 가져간다. 이때 이미 가져간 조각은 뒷사람이 원하더라도 받지 못한다. 가장 많은 조각을 원했던 방청객의 번호, 실제로 가장 많은 조각을 가져간 방청객의 번호를 구하는 문제다. 단, 답이 여러 개인 경우에는 번호가 작은 사람을 출력한다. 💬 풀이 👩‍💻 코드 C++ #include #include using namespace std; int cake[1001]; // 케이크 조각 별로 방청객 번호 int cnt[1001]..
[BOJ] 백준 #1543. 문서 검색 🎨 문제 문제 링크: https://www.acmicpc.net/problem/1543 알고리즘 분류: 문자열, 그리디 알고리즘, 브루트포스 난이도: Silver 4 💬 풀이 1. 입력에 공백이 포함되므로 getline()으로 입력받기 2. 브루트포스 L21에서 word[j-i]를 word[j]로 해놓고 맞왜틀🤦‍♀️ 인덱스 한번에 정확하게!!!! 주의!!!!! 헷갈리거나 실수할 것 같으면 종이에라도 그려보기 👩‍💻 코드 C++ #include #include using namespace std; int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); string s, word; getline(cin, s); getline(cin, word); int..
[알고리즘] 소수 판별 알고리즘 1. O(√n) 2부터 √n까지 나눠서 나머지가 0이 아니면 소수다. ∵ 만약 √n 이후에 나눠서 나머지가 0이 되는 수가 있다면, 그 수와 1~√n 사이의 수랑 곱해져서 n이 되는데, 그전에 필터링이 되지 않았다는 뜻이므로 이는 모순이다. bool isPrimeNum(int n) { if (n == 1) return false; else if (n == 2) return true; else if (n%2 == 0) return false; else { for (int i=3; i*i
[BOJ] 백준 #1920. 수 찾기 (C++) 🎨 문제 문제 링크: https://www.acmicpc.net/problem/1920 알고리즘 분류: 이분 탐색 난이도: Silver 4 💬 풀이 N개의 수들을 배열에 담고, 정렬하여 이분탐색 실시 처음에는 N개의 수들을 벡터v에 담고, 단순히 선형탐색으로 했다가 시간초과 났었다. 👉🏻 틀린 코드 확인 그래서 이분탐색으로 했는데도, 이분탐색 함수 파라미터로 벡터 전체를 넘기니까 또 시간초과가 떴다. 👉🏻 틀린 코드 확인 그래서 벡터 크기를 동적으로 하지 않고 전역으로 뺀 다음 v(100001)을 할당했다. 이때 sort(v.begin(), v.end())가 아니라 i=0부터 i=N-1까지만 부분정렬을 해야 했는데, 할 줄 몰라서 틀렸다. (sort(v, v+N)은 안되더라.) 👉🏻 틀린 코드 확인 그래..