목록전체 글 (36)
바야바네 움집
geeksforgeeks 는 매우 재미있는 사이트인듯. 문제를 푸는 방법은 총 4가지인데, 나는 그 중 3번째 방법인 해쉬맵을 사용했다. https://www.geeksforgeeks.org/majority-element/ Majority Element - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions. www.geeksforgeeks.org
Method 1: Sorting and Two-Pointers technique. Method 2: Hashing. Method 3: Using remainders of the elements less than x. 나는 2번 방법으로 풀었다. 처음에 이중for문으로 돌렸더니 시간 초과 떠서 다시 했음. map 사용해서 풀 때 주의할 점은 처음에 map을 초기화하면 안된다는 것이다. 초기화없이 비교부터 시작해서 map에 해당 값이 없는 경우 추가해주는 형식이어야 제대로 된 풀이가 가능하다. map을 미리 초기화 해 줄 경우 x : 4, arr[] = 1, 2, 5, 6, 7 이 케이스에서 틀린 값을 도출함. https://www.geeksforgeeks.org/given-an-array-a-and-a-n..
strtok 함수는 포인터를 반환한다. 문자열을 한 번 제공해주면 그 문자열을 다 자르기 전까지는 문자열을 다시 줄 필요가 없음. (This function is designed to be called multiple times to obtain successive tokens from the same string.) /* strtok example */ #include #include int main () { char str[] ="- This, a sample string."; char * pch; printf ("Splitting string \"%s\" into tokens:\n",str); pch = strtok (str," ,.-"); while (pch != NULL) { printf ("%..
📌대 · 소문자 변환 1. 아스키 코드를 사용해 직접 변환 - 소문자를 대문자로 바꾸고 싶은 경우 : 바꾸고자 하는 char - 'a' + 'A' - 대문자를 소문자로 바꾸고 싶은 경우 : 바꾸고자 하는 char - 'A' + 'a' 계산 원리는 1. 해당 알파벳의 위치를 찾아내서 (char - 'a' or 'A') 2. 원하는 쪽에서 찾는 방식이다. ((1) + 'A' or 'a') 2. cctype 라이브러리의 tolower, toupper 함수 사용 - string 전체를 한번에 바꾸지 못하기 때문에 인덱스를 사용해 일일이 변환해주어야 한다는 번거로움이 있음. 📌풀이 전부 대문자로 바꾼 다음에 개수를 센다. 효율 개떨어지는 듯. 깔깔 📌코드 #include #include #include using..
📌문제 상황 printf()를 통해 string을 출력하고자 했지만 실패했다. 값이 잘못 저장된 줄 알았으나 cout을 사용해 출력하면 문제없이 원하는 값이 나오는 것을 볼 수 있었다. string myToLower(string _str) // ABCD { string temp = ""; for(int i=0; i= 'A' && c printf with std::string? My understanding is that string is a member of the std namespace, so why does the following occur? #include int main() { using namespace std; string myString = "Press EN... stackoverflow..
📌풀이 해시맵을 사용해 빠르게 값을 찾을 수 있도록 했다. 알파벳이 등장한 맨 처음 위치를 저장해야 하는데 문자열을 앞에서부터 탐색하면 가장 마지막에 나온 위치를 저장해서 거꾸로 탐색했다. 📌코드 #include #include #include using namespace std; int main() { string str; unordered_map alphabet; getline(cin, str); for(int i=str.length() - 1; i>-1; i--) alphabet[str[i]] = i; for(int i=97; i
📌풀이 scanf 로 받은 인자를 배열이 아닌 문자열에 저장할 때는 꼭 & 사용하기. char word[10]; 같은 배열의 경우에는 scanf("%c", word); 처럼 해주면 됨. 배열의 이름은 그 자체로 주소값을 의미한다. 📌코드 #include using namespace std; int main() { char word; scanf("%c", &word); printf("%d", word); return 0; }
📌풀이 오름차순으로 정렬한 뒤 작은 수부터 하나씩 빼보면 된다. 예외인 '예산이 남았을 경우' 만 잘 처리해주면 됨. 📌코드 #include #include #include using namespace std; int solution(vector d, int budget) { int answer = 0; // 오름차순 정렬 sort(d.begin(), d.end()); for(int i=0; i 0) answer = d.size(); return answer; }
📌문제 https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 📌풀이 그냥 for문으로 다 탐색했다. 비교 대상인 수포자들의 답안이 미리 공개되어 있어서 편했음. 📌코드 #include #include using namespace std; vector solution(vector answers) { vector answer; vector first = {1, 2, 3, 4, 5}; vector second = {2,..
깔깔 📌문제 https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 📌풀이 '옷의 종류'를 key 값으로 하는 map을 생성해서 풀면 된다. vector의 처음부터 끝까지 탐색하면서 동일한 옷의 종류가 나올 때마다 map[옷의 종류] 값을 1씩 더해주면 끝! 개수 세기가 끝나면 언젠가 배웠던 경우의 수를 잘 떠올려서 계산하면 된다. 스파이는 1개 이상의 옷을 입는다고 했으니 (가능한 모든 경우의 수) - (아무 것도 입지 않았을 경우) 가 정답임. 📌코드 int solution(vector clothes) { int answer = 1; unordered_map map; for(int i=0; i