프로그래머스/Level_226 [프로그래머스 Level_2 / C++ / 카카오] 방금그곡 문제를 봤을 때 역시나 카카오는 문자열을 예쁘게(?) 준다. #접근방법 (1) 먼저 m 의 문자열은 12개의 문자열을 나타낸다. 여기서 중요한 점은 'C#' 또한 하나의 음이라는 것이다. 그렇기 때문에 본인은 '#'을 우측에 두고 있는 알파벳에다가 +10 정도를 해주면서 다른 알파벳으로 나타냈다. 즉, 'C' 는 아스키코드로 67 이기 때문에 +10 을 해주면 'M'으로 치환된다. "CC#BCC#BCC#BCC#BCC#B" -> "CMBCMBCMBCMBCMBCMB" (2) 인덱스로 문자열 자르기 문자열을 처리하기 위해서 정말 많이 쓰이는 함수이다. 이 함수는 어떠한 문자열의 특정 인덱스에서 어떠한 인덱스까지 사이의 새로운 문자열을 만들때 보통 사용된다. 예를 들어, "abcdefe" 라는 baebalja... 프로그래머스/Level_2 2022. 2. 17. [Level_2 / C++ / 카카오] 괄호 변환 문제를 잘 이해하고 재귀 및 stack을 잘 활용해야한다. 이 문제는 어떻게 괄호를 변환하는지 설명이 잘 되어있다. 그렇기 때문에 문제를 차근차근 읽어보고 재귀가 어떻게 돌아갈지 이해하도록 노력해야 한다. 다음 입출력 예제를 통해서 문제에서 설명한대로 괄호를 변환해서 만들어보면 어떻게 하라는건지 이해될거다. 실수할 수 있는 부분은 4-4 괄호 방향을 뒤집으라는 것이지 순서를 바꾸라는 것이 아니다 #include #include #include #include #include using namespace std; string answer = ""; string split (string s){ if(!s.size())return s; vector x(2,0); int index =0; for(int i=0; i 프로그래머스/Level_2 2022. 1. 29. [Level_2 / C++ / 카카오] 메뉴 리뉴얼 모든 경우의 수 정렬 벡터를 정렬할 때 정렬 될 수 있는 모든 경우의 수를 물어보는 문제가 있다. 이러한 경우 해당 함수를 사용한다. 즉, A B C 를 정렬하고 싶은데 모든 경우를 정렬하면, ABC ACB BAC BCA CAB CBA 순으로 정 baebalja.tistory.com 1. course 사이즈 만큼 for문 돌리기 2. 각 손님이 주문한 메뉴가 course 사이즈보다 작으면 continue; 3. next_permutation 사용해서 변화되는 인덱스 값들에 해당하는 문자들로 문자열을 만들고 map에 저장 4. next_permutation 종료된 후 제일 큰 값을 갖는 key값을 answer에 push_back; 5. 알파벳 오름차순으로 정렬 #include #include #includ.. 프로그래머스/Level_2 2022. 1. 28. [Level_2 / C++ / 카카오] k진수에서 소수 개수 구하기 1. 10진수로 주어진 숫자를 k진수로 변환후 문자열로 저장 2. 소수를 담을 long long 타입의 벡터 생성 후 문자열에서 숫자에 해당되는 부분들을 담기. 3. 소수인지 아닌지 판단하는 함수 호출 "2 ~ 루트(n)" 에 해당하는 값으로 n을 나눈다. 나누어진다면 false 반환 그렇지 않다면 true 반환 소수 판별법, 왜 루트 N 이하의 수만 나눠보면 되는 것일까? 에라토스테네스의 체 라는 개념을 읽어보면 n이 소수인지 아닌지 판별하기 위해서는 sqrt(n) 이하의 수만 나눠보면 된다고 한다. (sqrt는 루트를 의미함) 근데 왜 sqrt(n) 이하의 수를 나눠보면 알 수 makedotworld.tistory.com #include #include #include #include #include.. 프로그래머스/Level_2 2022. 1. 25. [Level_2 / C++ / 카카오] 문자열 압축 이 문제의 핵심은 문자열의 절반만 확인하면 된다는 것이다. 첫번째 예제에서 크기가 8인 문자열이 주어졌다면 1부터 4사이즈만큼만 반복문을 돌리면된다. 즉, 사이즈가 1~4인 문자열을 돌아보면서 같으면 cnt값을 증가하고 다르면 이전에 증가시켰던 cnt값을 스트링으로 바꾸고 비교해왔던 문자열을 뒤에 붙인다. 그리고 비교해왔던 문자열을 현재 자른 문자열로 교체한다. * 파라미터 값으로 받아온 문자열이 사이즈가 1이였다면 바로 return 1을 해준다. #include #include #include #include #include using namespace std; int solution(string s) { int answer = INT_MAX; if(s.size()==1)return 1; for(int.. 프로그래머스/Level_2 2022. 1. 24. [Level_2 / C++ / 카카오] [1차] 캐시 1. cacheSize 가 0이면 return 도시의 개수 X 5 2. 문자열 대문자로 변환 (소문자, 대문자 구분하지 않는다) 3. map 생성하여 제일 작은 cnt값을 갖는 key 문자열 저장 4. (주의) hit를 해도 cnt 값 갱신 5. 제일 작은 cnt값을 갖는 key 문자열에 해당하는 map을 지우고 새로운 값 추가 #include #include #include #include #include #include using namespace std; int solution(int cacheSize, vector cities) { int answer = 0; map m; int cnt =1; if(cacheSize==0)return cities.size()*5; for(int i=0; i 프로그래머스/Level_2 2022. 1. 24. [Level_2 / C++ / 카카오] 프렌즈4블록 문자열 벡터가 만약 "TTTANT" "RRFACC" "RRRFCC" "TRRRAA" "TTMMMF" "TMMTTJ" 이런식으로 주어졌다고 가정하자. 난 이것을 오른쪽으로 90도 회전했다. 이런식으로 돌려서 위에서부터 차례대로 v[0]의 문자열 ~ v[5]의 문자열로 생각하는 것이다. (쉽게 생각할 수 있도록!) 벡터 v를 하나하나씩 살펴보는데 정사각형 2X2 라는 점을 고려해서, 현재 원소에서 오른쪽, 아래쪽, 오른쪽+아래쪽을 확인해야하기 때문에 반복문에서는 열과 행을 하나씩 빼준값 까지 돌아야한다. 각 벡터의 문자열들의 사이즈가 1보다 같거나 작으면 애초에 비교대상이 되지 않으니까 continue 해준다. 그리고 map이라는 이차원 맵을 생성하여 서로 같은 원소가 총 4개가 나오면 map의 해당 인덱스.. 프로그래머스/Level_2 2022. 1. 20. [Level_2 / C++ / 카카오] 수식 최대화 삭제 및 삽입 벡터의 원소를 삭제를 하면 이후 인덱스에 해당하는 값이 지운 인덱스 칸을 채울 수 있다. 또한 어떤 특정 인덱스에 특정값을 삽입 하면 기존에 있던 값들은 뒤에 위치하게 된다. 다음 문법을 확 baebalja.tistory.com 모든 경우의 수 정렬 벡터를 정렬할 때 정렬 될 수 있는 모든 경우의 수를 물어보는 문제가 있다. 이러한 경우 해당 함수를 사용한다. 즉, A B C 를 정렬하고 싶은데 모든 경우를 정렬하면, ABC ACB BAC BCA CAB CBA 순으로 정 baebalja.tistory.com 우선 연산자의 우선순위가 주어지는데 총 세가지 연산자가 있다. "*", "-", "+" 이 연산자를 p_cal 이라는 벡터에 넣고 정렬해준다. next_permutaion 함수를 적용하.. 프로그래머스/Level_2 2022. 1. 20. [Level_2 / C++ / 카카오] 튜플 먼저 이차원 벡터안에 각 원소들의 숫자의 개수들을 집어넣고 각 벡터의 사이즈만큼 sort 한 후 map 자료구조를 통해 없는 원소들을 추가해주는 식으로 진행했다. 로직은 쉬워서 문자열로 제공되는 저 숫자들을 어떻게 빼내야 할지가 관건인 문제인거 같기도하다. 내가 푼 방식은 substr 함수와 find 함수를 익힐겸 해봤는데 이 방식 말고 다른 방식을 쓰는것을 추천한다 예를 들어, 방식은 여러가지가 있겠지만 가장 간단한 방법은 문자열을 차례대로 살펴보면서 그냥 숫자만 보면된다. ',' , '{', '}' 이러한 문자를 만났을 때는 그냥 else로 다 처리하란말이다. string s= ""; 숫자야? 응 s += 숫자1 숫자야? 응 s += 숫자2 숫자야? 아니 s == "숫자1숫자2" 이 값을 정수형으로 .. 프로그래머스/Level_2 2022. 1. 19. [Level 2] 가장 큰 수 (C++) 오름차순, 내림차순으로 정렬하자 sort() 함수는 algorithm 헤더에 포함되어 있다. 대부분 코딩테스트에서 웬만해선 처음부터 끝까지 정렬을 한 후 문제를 풀게끔 되어 있는 경우가 많다. 이럴때 sort() 함수가 매우 유용하다. 벡터, 문 baebalja.tistory.com 사용자 정의에 의한 정렬을 하여 이 문제를 풀면된다. 즉, cmp() 함수를 생성하여 sort()의 세번째 인자 값으로 넣으면, bool 함수의 반환 값에 의해서 정렬이 동작한다. number값을 to_string 함수를 통해서 문자열로 처리한 후 compare()함수에서 문자열 a와 b를 합치는데 이때 a+b를 연결한것과 b+a를 연결한 것중에 더 큰 값을 앞에다가 정렬 하겠다는 의미이다. 6과 10을 한번 보자 해당 값을.. 프로그래머스/Level_2 2022. 1. 17. 이전 1 2 3 다음 반응형