본문 바로가기

[PS] 문제풀이/프로그래머스4

[ 프로그래머스 42746 ] 가장 큰 수 (C++) [문제보기] [해결과정] 1. string 벡터 v 생성 2. v에 numbers를 string으로 변환하여 삽입 -> v.push_back(to_string(numbers[i])); 3. sort (정렬) - bool compare(string a, string b) 함수 사용 -> ( a + b > b + a ) return true; else false; a = 120 , b = 21 이라면 a+b = 12021 b+a = 21120 이렇게 문자열을 붙여서 int형으로 비교 하는 것이다. 4. 예외처리 -> v의 첫 원소에 "0"이 들어있다면, 최대 수가 0이라는 것이다. 그래서 return "0"; 5. 반복문을 돌며 answer에 v원소들 붙이기 [소스코드] [해결 과정 중 실수한 부분 / 잡담.. 2020. 4. 4.
[ 프로그래머스 42626 ] 더 맵게 (C++) [문제보기] [해결과정] 1. 오름차순 우선순위 큐 선언 (priority_queue) 2. vector 입력 값들을 모두 pq에 넣기 3. 만약 pq.top() 이 k 보다 같거나 크면 return; *** 왜냐하면 오름차순 우선순위 큐니까 가장 처음 값이 가장 작은 값이다. *** 가장 작은 값이 k 보다 같거나 크게 만들기 위한 문제다. 4. 무한 반복문 실행 - 예외처리1 : 만약 처음 값이 K 보다 같거나 크면 return answer; - 예외처리2 : 만약 큐 사이즈가 1이고, K 보다 작으면 return -1; (불가능한 경우) -> int a, b 변수 선언 -> a에 가장 첫 값 저장하고 큐 pop, b도 마찬가지.. *** 이렇게 하는 이유는 a에 가장 작은 값, b에 두번째로 작은 .. 2020. 4. 4.
[ 프로그래머스 42587 ] 프린터 (C++) [문제보기] [해결과정] 1. 큐(인자 2개), 우선순위 큐 생성 2. 벡터에 있는 것들을 큐에 삽입 -> 우선순위 큐에는 우선 순위 그대로.. -> 큐에는 우선 순위와 초기 위치 3. 무한 반복문을 돌며 큐의 중요도와 우선순위 큐의 맨 앞의 중요도를 비교 -> 만약 중요도가 같다면 pq.pop() 하고 answer++ -> 만약 순서가 location과 같다면 break; -> 중요도가 다르다면 현재 a,b를 q에 다시 삽입 [소스코드] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 /* Programmers 42587 - 프린터 Created by haejun on .. 2020. 3. 31.
[ 프로그래머스 12899 ] 124 나라의 숫자 (C++) [문제보기] [해결과정] 1. char arr배열 선언 {4, 1, 2} 2. n을 3으로 계속 나누는 반복문 수행 -> arr[ n%3 ] + answer; -> if(n%3==0) 이라면 n-=1; [소스코드] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include #include #include using namespace std; char arr[3] = {'4','1','2'}; string solution(int n) { string answer = ""; int a; while(n!=0){ a = n%3; n = n/3; if(a==0) n-=1; answer = arr[a]+answer; } return answer; } [해결 과정 중 실수한 부분.. 2020. 3. 31.