728x90

Coding Problem/프로그래머스 25

[프로그래머스/Lv2] - 튜플

https://programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 실제적으로 문자열에서 원하는 데이터를 추출할 수 있는지를 확인하는 문제로 느꼈다. 처음에 [입출력 예] 에서 result가 왜 저렇게 나오는지 이해할 수 없었다. 문제 해결을 위해 s를 각 집합{ ?, ?, ? }를 요소의 개수가 오름차순으로 정렬되어야 한다. 즉, { {4, 2, 3}, { 3 }, { 2,3..

[프로그래머스/Lv2] - 전화번호 목록

https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 해시를 활용하여 문제를 해결해야 한다. 실제로는 꼭 해시를 활용하지 않아도 해결이 가능하다고 한다. 문제 풀이또한 주관적인 생각으로는 해시라고 하기보다 c++ 에서 unorder_map을 활용할 줄 아는 것이 필요하다고 생각한다. 처음에는 phone_book의 모든 요소를 unordered_map의 key로 등록하고 unordered_map을 iterator..

[프로그래머스/Lv2] - 가장 큰 수

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 입력을 조합하여 만들 수 있는 가장 큰 수를 찾는 문제이다. 처음에 1, 10 등이 들어와도 4자리로 맞춰서 문제를 해결할려고 했으나 1~6 테스트 케이스에서 계속 실패가 발생하였다. 오히려 sort()를 사용할 때 2개의 숫자로 조합할 수 있는 수를 비교하는 것이 정답이었다. 더보기 #includ..

[프로그래머스/Lv1] - [1차] 비밀지도

https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 파이썬에서는 간단히 2진수로 나타낼 수 있었기 때문에 빨리 풀 수 있었다. 더보기 def calc(answer, n, arr): for i, item in enumerate(arr) : binList = list(str(bin(item).replace('0b', ''))) convertedList = [0 for idx in range(n)] conver..

[프로그래머스/Lv1] - 키패드 누르기 (카카오)

https://programmers.co.kr/learn/courses/30/lessons/67256 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 처음에는 각 번호 별로 score를 1 ~ 7 까지 점수를 지정해 식으로 풀려고 했으나 잘 풀리지 않아 dictitonary를 이용해 풀었다. 충분한 속도가 나오고 카카오에서는 lv1이면 1번문제이니 너무 많은 시간을 낭비하지 않도록 한다. 더보기 de..

[프로그래머스/Lv1] - 소수 찾기

programmers.co.kr/learn/courses/30/lessons/12921 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 에라토네스의 체를 이용해야 효율성 채점을 통과할 수 있다. 에라토네스의 체는 아래와 같은 구조로 코드를 구현한다. 배열을 생성하여 초기화한다. 2부터 시작해서 특정 수의 배수에 해당하는 수를 모두 지운다. (자기 자신은 지우지 않는다.) 2부터 시작하여 지우지 않은 수를 출력한다. 더보기 #include #include using namespace s..

[프로그래머스/Lv1] - 문자열 내 마음대로 정렬하기

programmers.co.kr/learn/courses/30/lessons/12915 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱 programmers.co.kr 간단히 char 를 int로 생각하여 비교하면 될 문제지만 만약 같다면 사전순으로 정리하는 문제이다. 사전순으로 정리하는 것에서 조건을 정확히하면 쉽게 풀 수 있다. 더보기 #include #include #include using namespace std; vector solution(vector strin..

[프로그래머스/Lv1] - 나누어 떨어지는 숫자 배열

programmers.co.kr/learn/courses/30/lessons/12910 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr 더보기 #include #include #include using namespace std; vector solution(vector arr, int divisor) { vector answer; vector::const_iterator iter = arr.begin(); while (iter != arr.e..

[프로그래머스/Lv1] - 수박수박수박수박수박수?

programmers.co.kr/learn/courses/30/lessons/12922 코딩테스트 연습 - 수박수박수박수박수박수? 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한 programmers.co.kr UTF8에서 한글은 3 Byte를 사용한다는 것을 알고 있어야 풀 수 있는 문제 더보기 #include #include #include #include char* solution(int n) { // 리턴할 값은 메모리를 동적 할당해주세요. char* answer = (char*)malloc(sizeof(char*) * (n*3) + 1)..

[프로그래머스/Lv1] - 예산

programmers.co.kr/learn/courses/30/lessons/12982 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 programmers.co.kr 간단히 정렬 후 budget 보다 커지면 loop를 멈추는 식으로 계산할 수 있다. 더보기 #include #include #include #include using namespace std; int solution(vector d, int budget) { int answer = 0; const int dSize = d.size(); for (int lhs = 0; lhs < ..

반응형