본문 바로가기
반응형

programmers11

[프로그래머스] 전화번호 목록 (C++) 문제 링크 코딩하기 전 생각하기 /* 전화번호부를 오름차순으로 정렬한다. 전화번호부를 순회한다. 앞 전화번호가 뒷 전화번호의 접두어이면 false를 반환한다. */ 코드 #include using namespace std; bool solution(vector phone_book) { sort(phone_book.begin(), phone_book.end()); for (int i=0; i < phone_book.size()-1; i++) { if(phone_book[i] == phone_book[i+1].substr(0, phone_book[i].length())) return false; } return true; } 느낀점 유의해야 할 점은 전화번호부를 숫자순으로 정렬하면 안되고, 사전순으로 정렬해.. 2021. 9. 17.
[프로그래머스] H-Index (C++) 문제 링크 코딩하기 전 생각하기 /* 벡터를 내림차순으로 정렬한다. i를 활용하는 for문으로 정렬된 벡터를 순회한다. citations의 i번째 값보다 i+1 값이 더 크면 i를 반환한다. */ 코드 #include using namespace std; int solution(vector citations) { sort(citations.begin(), citations.end(), greater()); for (int i = 0; i < citations.size(); i++) { if (citations[i] < i+1) return i; } return citations.size(); } 느낀점 카테고리 덕분에 정렬이라는 힌트를 얻을 수 있었다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하.. 2021. 9. 16.
[프로그래머스] 가장 큰 수 (C++) 문제 링크 코딩하기 전 생각하기 /* 숫자를 이어 붙인 값을 비교하기 위해 숫자 벡터를 문자열 벡터로 변환한다. comp 함수를 선언한다. 두 숫자를 그대로 붙여본 것과 순서를 바꿔서 붙여본 것을 비교한다. 다른 숫자와 비교했을 때 더 큰 값이 만들어지는 숫자를 앞으로 오게한다. sort 함수로 벡터를 정렬한다. 벡터를 문자열로 변환하고 문자열을 반환한다. */ 코드 #include using namespace std; bool comp(string a, string b) { return a + b > b + a; } string solution(vector numbers) { string answer = ""; vector str_numbers; for (int i : numbers) str_numbe.. 2021. 8. 3.
[프로그래머스] 모의고사 (C++) 문제 링크 코딩하기 전 생각하기 /* 학생들의 반복되는 찍기 패턴을 파악한 후 각각 벡터로 저장하자. count 배열을 생성한다. answers 벡터를 순회한다. i를 패턴 벡터의 길이로 나눈 나머지 값을 이용하여 정답과 학생의 답이 일치하면 count에 1을 더해준다. count 배열의 최대값을 구하고 최대값만큼 정답을 맞춘 학생들의 번호를 answer 벡터에 저장한다. answer 벡터를 반환한다. */ 코드 #include using namespace std; vector solution(vector answers) { vector answer; vector s1 = {1, 2, 3, 4, 5}; vector s2 = {2, 1, 2, 3, 2, 4, 2, 5}; vector s3 = {3, 3, .. 2021. 8. 2.
[프로그래머스] 2016년 (C++) 문제 링크 코딩하기 전 생각하기 /* 월별 날짜의 수가 담긴 벡터를 생성한다. 요일의 이름이 담긴 벡터를 생성한다. 날짜가 2016년의 몇번째 날인지 구하고 7로 나눈 나머지를 구하여 요일의 이름을 반환한다. */ 코드 #include using namespace std; string solution(int a, int b) { vector month_day = {31,29,31,30,31,30,31,31,30,31,30,31}; vector week = {"SUN","MON","TUE","WED","THU","FRI","SAT"}; int day = 4; for ( int i = 0; i < a - 1; i++ ) day += month_day[i]; day += b; return week[day % .. 2021. 7. 24.
[프로그래머스] 콜라츠 추측 (C++) 문제 링크 코딩하기 전 생각하기 /* 다음을 500번 반복한다. 숫자가 1이면 break한다. 숫자가 짝수이면 2로 나눈다. 숫자가 홀수이면 3을 곱하고 1을 더한다. 반복문이 끝날 때 까지 1이 나오지 않았으면 -1을 반환한다. 반복된 수를 반환한다. */ 코드 #include using namespace std; int solution(int num) { int i; long long n = num; for ( i = 0; i < 500; i++ ) { if ( n == 1 ) break; if ( n % 2 == 0 ) n /= 2; else n = n * 3 + 1; } if ( i == 500 ) return -1; return i; } 느낀점 디버깅을 해보니 num을 int로 했을 때 오버플로.. 2021. 7. 24.
[프로그래머스] 방문 길이 (C++) 문제 링크 코딩하기 전 생각하기 /* 이동 기록을 set에 저장하자. 처음 좌표를 0, 0으로 설정하자. dirs를 순회하자. 경계를 넘지 않고 이동했으면 원래좌표 + 현재좌표의 값을 set에 저장한다. set의 크기를 반환한다. */ 코드 #include #include using namespace std; int solution(string dirs) { int x = 0, y = 0; unordered_set s; string str1, str2; for ( auto c : dirs ) { int tmp_x = x; int tmp_y = y; bool go = false; if ( c == 'U' ) { if ( y < 5 ) { y++; go = true; } } if ( c == 'D' ) { .. 2021. 7. 24.
[프로그래머스] 약수의 개수와 덧셈 (C++) 문제 링크 코딩하기 전 생각하기 /* left부터 right까지 반복한다. (i) 1부터 i까지 반복한다. (j) i를 j로 나눴을 때 나머지가 0이면 count에 1를 더한다. count가 짝수이면 answer에 i을 더하고 아니라면 answer에 i를 뺀다. answer를 반환한다. */ 코드 #include using namespace std; int solution(int left, int right) { int answer = 0; for ( int i = left; i 2021. 7. 23.
[프로그래머스] 소수 만들기 (C++) 문제 링크 코딩하기 전 생각하기 /* 소수인지를 판별하는 함수를 선언하자. 2부터 해당 숫자가 되기 전까지의 수를 나누는데 나누어 떨어지는 수가 있으면 false를 반환한다. 3중 배열을 통해 세 개의 수를 선택하는 모든 경우의 수를 확인한다. 세 수를 더했을 때 소수가 나오면 count에 1을 더한다. count를 반환한다. */ 코드 #include using namespace std; bool is_prime(int n) { for ( int i = 2; i < n; i++ ) { if ( n % i == 0 ) return false; } return true; } int solution(vector nums) { int count = 0; for ( int i = 0; i < nums.size(.. 2021. 7. 23.
[프로그래머스] 하샤드 수 (C++) 문제 링크 코딩하기 전 생각하기 /* 숫자를 문자열로 변환 후 순회하여 자리 수의 합을 구한다. 숫자가 자리 수의 합으로 나누어 떨어지면 true를, 아니라면 false를 반환한다. */ 코드 #include using namespace std; bool solution(int x) { int sum = 0; for ( auto c : to_string(x) ) sum += c - '0'; if ( x % sum == 0 ) return true; return false; } 느낀점 딱히 없다. (주의) 기록용으로 작성한 글입니다. 코드가 허접하거나 알고리즘의 효율이 낮을 수 있습니다. 댓글 환영합니다! 2021. 7. 23.
반응형