본문 바로가기

Study/Programmers

(19)
프로그래머스 - 수식 최대화(2020 카카오 인턴십) 처음 떠올린 방법은 스택을 사용하지 않는 방법이었다. string을 *+-로 해두고 3!의 경우에 대해서 모두 계산해보는 방법을 사용했는데, 처음에 *를 expression에서 다 찾아서 계산하고, +, - 순으로 계산하는 방법을 생각했다. 이 때, vector의 값을 어떻게 변화시켜야 하는지가 바로 떠오르지 않아 다른 방법으로 풀려고 했던 것 같다. 아래는 스택을 사용한 방법인데, 각 연산자의 우선순위를 확인하여 우선순위가 높은 연산자를 먼저 수행하게끔 스택을 관리하면서 값을 계산하면 된다. (즉, 스택에 있는 연산자가 다음 연산자보다 우선순위가 높다면 바로 수행 아니면 스택에 쌓아놓는다.) 코드 - 스택을 사용한 방법 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1..
프로그래머스 - 실패율(2019 KAKAO BLIND RECRUITMENT) 입출력 예시를 보면 쉽게 이해할 수 있는 문제이다. 이런 구현 문제는 항상 모든 조건을 만족하도록 코드를 짜야한다. (스테이지에 도달한 유저가 없는 경우 해당 스테이지의 실패율은 0으로 정의한다 -> 이 부분을 정의하지 않아서 한 번에 통과하지 못했다.) ex) N = 5, stages = [2, 1, 2, 1, 2]일 경우 3, 4, 5 스테이지로 간 사람이 없기 때문에 스테이지의 실패율이 모두 0이 된다. 코드 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 #include #include #include #include using namespace std; map m; bool comp(..
프로그래머스 - 단체사진 찍기(2017 카카오코드 본선) 단체사진을 찍는 인원은 우선 총 8명이고 8명이 설 수 있는 경우의 수는 총 8! = 40320개이다. 그 중 최대 100개의 조건을 만족하는 순서쌍의 개수를 구하는 것이 문제이다. 코드 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 38 39 40 41 42 43 44 45 46 47 48 49 #include #include #include #include using namespace std; map m; // 전역 변수를 정의할 경우 함수 내에 초기화 코드를 꼭 작성해주세요. int solution(int n, vector data) { int answer = 0;..
프로그래머스 - 키패드 누르기(2020 카카오 인턴십) 두 엄지손가락의 거리를 구하는 로직은 2, 5, 8, 0을 누를 때에만 필요하고 나머지 숫자들에 대해서는 어떤 손가락을 사용하는지 정해져있다. 코드 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 #include #include #include using namespace std; mapm; char charset[] = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '0',..
프로그래머스 - 오픈채팅방(2019 KAKAO BLIND RECRUITMENT) map 자료구조를 이용한 간단한 구현문제였다. uid별로 사용자를 구분하고, 각 uid에 해당하는 nickname을 미리 map에 저장 해놓는다. 이 후 이러한 입장/퇴장 정보를 저장해놓은 info 구조체를 원소로 하는 vector를 순회하며 정보를 출력하면 된다. 코드 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 #include #include #include using namespace std; typedef struct info { string uid; strin..
프로그래머스 - 징검다리 건너기(2019 카카오 개발자 겨울 인턴십) 우선 stones의 배열의 크기가 20만까지 이므로 O(N^2)으로는 효율성 검사를 통과할 수 없다. 그래서 set을 이용하여 풀어보았다. 코드 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 #include #include #include #include using namespace std; multiset s; int solution(vector stones, int k) { int answer = 0; int start = 0; for(int i=0; i
프로그래머스 - 자물쇠와 열쇠(2020 KAKAO BLIND RECRUITMENT) 이 문제는 brute-force로 쉽게 구할 수 있는 문제였다. 코드 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 #include #include #include #include using namespace std; void rotate(vector &key) { queue q; for(int i=0; i
프로그래머스 - 괄호 변환 처음에 문제 해석이 어려웠는데 그냥 문제가 제시하는 대로 코드를 작성하면 된다. 코드 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 #include #include #include #include using namespace std; bool check(string s1) { stack st; for(int i=0; i