본문 바로가기

Practice & Study

(22)
프로그래머스>코딩테스트 입문>특정 문자 제거하기 (C++) | 문자열과 문자, remove(), erase() 문자열과 문자를 확실히 구분해야하는 문제다. 혼동하기 은근히 쉬움... 나의 코드 #include #include using namespace std; string solution(string my_string, string letter) { char c = letter[0]; string str = ""; for(int i = 0; i < my_string.length(); i++) { if(my_string[i] != c) { str.push_back(my_string[i]); } } return str; } letter가 한 글자인 스트링이어서 문자형으로 받아줬다. 굳이 그럴 필요없이 if문 안에서 바로 letter[0]으로 써도 됐을텐데... 다른 사람의 코드 #include #include #i..
프로그래머스>코딩테스트 입문>배열 뒤집기 (C++) 지난 면접에서 물어본 문제와 비슷하다. 차이가 있다면 라이브러리를 쓰느냐 마느냐의 차이겠지.... 우선 나는 이렇게 풀었다. 좋은 방법은 아닌 것 같지만 이게 내게 가장 익숙한 방법이다. vector solution(vector num_list) { vector answer; for(int i = num_list.size() - 1; i > -1; i--) { answer.push_back(num_list.at(i)); } return answer; } 다른 사람의 풀이1 vector solution(vector num_list) { vector answer; reverse(num_list.begin(), num_list.end()); return num_list; } reverse함수를 사용하였다. r..
프로그래머스>코딩테스트 입문>피자 나눠 먹기(1) (C++) | 짧게 int solution(int n) { int answer = 0; if(n < 7) { answer = 1; } else if(n % 7 == 0) { answer = n / 7; } else { answer = (n / 7) + 1; } return answer; } 내 코드는 너무 길다. int solution(int n) { return n % 7 == 0 ? n / 7 : n / 7 + 1; } 삼항 연산자로 이렇게 짧게 쓸 수 있다.
프로그래머스>코딩테스트 입문>최빈값 구하기 (C++) | sort, max_element 나의 풀이 #include #include #include using namespace std; int solution(vector array) { vector frequency; int cnt = 0; int num; sort(array.begin(), array.end()); num = array.at(0); for(auto& a : array) { if(a != num) { num = a; frequency.push_back(cnt); cnt = 0; } cnt++; } frequency.push_back(cnt); int max_num = *max_element(frequency.begin(), frequency.end()); int max_index = max_element(frequency.b..
프로그래머스>코딩테스트 입문>짝수 홀수 개수 (C++) 나의 풀이 #include #include using namespace std; vector solution(vector num_list) { vector answer; int even = 0; int odd = 0; for(auto& n : num_list) { if (n % 2 == 0) { even++; } else { odd++; } } answer.push_back(even); answer.push_back(odd); return answer; } 다른 사람의 코드 #include #include using namespace std; vector solution(vector num_list) { vector answer(2, 0); for (int num : num_list) { answer[n..
프로그래머스>코딩테스트 입문배열 두 배 만들기 (C++) | auto& 나의 풀이 #include #include using namespace std; vector solution(vector numbers) { vector answer; for (auto& n : numbers) { answer.push_back(n * 2); } return answer; } vector 클래스에서 요소를 하나씩 꺼내오기 위해서 반복문을 사용하였다. 이 때 auto& 을 사용했는데 이는 초기화 값에 따라 타입을 추론해서 결정해주는 키워드이다.
프로그래머스>코딩테스트 입문>분수의 덧셈 (C++) | 최대공약수, 최소공배수 나의 풀이 #include #include #include using namespace std; vector solution(int numer1, int denom1, int numer2, int denom2) { vector answer; int numer , denom; int gcd_num; numer = numer1 * denom2 + numer2 * denom1; denom = denom1 * denom2; gcd_num = gcd(numer, denom); while(gcd_num != 1) { numer /= gcd_num; denom /= gcd_num; gcd_num = gcd(numer, denom); } answer.push_back(numer); answer.push_back(den..
프로그래머스>코딩테스트 입문>숫자 비교하기 (C++) 나의 코드 #include #include using namespace std; int solution(int num1, int num2) { int answer = 0; if (num1 == num2) { answer = 1; } else { answer = -1; } return answer; } 다른 사람의 코드 #include #include using namespace std; int solution(int num1, int num2) { return num1 == num2 ? 1 : -1; } 짧고 간결한 코드가 무조건 좋은 것일까? 그렇게 생각하던 때도 있었지만 나중에 그렇게 짠 코드를 볼 때 오히려 한 눈에 알아보기 힘들었던 기억도 있다. 이런 간단한 코드라면 저렇게 삼항연산자를 쓰는게 좋..
프로그래머스>코딩테스트 입문>두 수의 나눗셈 (C++) 나의 코드 #include #include using namespace std; int solution(int num1, int num2) { double tmp = 0; int answer = 0; tmp = (double)num1 / (double)num2; tmp *= 1000; answer = (int)tmp; return answer; } 다른 사람의 괜찮아 보이는 코드 #include #include using namespace std; int solution(int num1, int num2) { return (num1* 1000)/num2 ; } 내 코드는 말이 너무 많고 다른 사람의 코드 예는 말이 너무 없다. 적당히 int answer = 0; answer = (num1 * 1000) ..
boj 14888 연산자 끼워넣기 (python) 어려...어려워 다른 분들은 어떨지 모르겠지만 dfs 배운지가 언제더라... 굴려라 맷돌! 지금껏 게을리 공부하던 날 머쓱해하며 계속 하면 나아지겠지 암튼 (〃⌒▽⌒〃)ゝ 조건_ 1. 연산자 우선순위를 무시하고 앞에서부터 계산을 진행한다. 2. 나눗셈은 정수 나눗셈으로 몫만 취한다. 3. 음수를 양수로 나눌 때는 C++14의 기준을 따라, 양수로 바꾼 뒤 몫을 취하고 그 몫을 음수롤 바꾼다. 구해야 하는 것_ N개의 수와 N-1개의 연산자가 주어졌을 때, 만들 수 있는 식의 결과가 최대인 것과 최소인 것의 값 출력 풀이_ 크게 두 가지 방법이 있다. (둘 다 전수조사이다) 첫번째, 순열을 사용하여 두번째, DFS를 사용하여 모든 경우의 수를 구해보는 것. (백트레킹) *백트레킹(Backtracking) ..