본문 바로가기

알고리즘/프로그래머스51

[C++] 다음 큰 숫자 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 입출력 예 78 83 15 23 C++의 STL인 bitset을 이용하여 2진수로 변환한 후 1의 개수를 세어 비교합니다. 처음에 count()함수를 몰라서 문자열로 변환하였습니다. 나의 답 #incl.. 2023. 6. 13.
[C++] 예상 대진표 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N번의 참가자끼리 게임을 진행합니다 입출력 예 n = 8 a = 4 b = 7 출력 = 3 예를들어 8명이 참가할 경우, 첫 번째 라운드에서 4번 참가자는 3번 참가자와 붙게 되고, 7번 참가자는 8번 참가자와 붙게 됩니다. 항상 이긴다고 가정했으므로 4번 참가자는 다음 라운드에서 2번이 되고, 7번 참가자는 4번이 됩니다. 두 번째 라운드에서 2번은 1번과 붙게 되고, 4번은 3번과 붙게 됩니다. 항상 이긴다고 가정했으므로 2번은 다음 라운드에서 1번이 되고, 4번은 2번이 됩니다. 세 번.. 2023. 6. 9.
[C++] 최댓값과 최솟값 최댓값과 최솟값 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 입출력 예 "1 2 3 4" "1 4" "-1 -2 -3 -4" "-4 -1" "-1 -1" "-1 -1" 입력 문자열을 공백을 기준으로 분리한 후, 각각 stoi()로 숫자로 변환하여 벡터a에 push합니다. 이후 벡터a를 오름차순으로 정렬한 후, 첫번째 값과 마지막값을 정답 문자열에 맞게 더하고 반환합니다. #include #include #include #includ.. 2023. 6. 5.
[C++] 옹알이 (1) 옹알이 (1) 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 입출력 예 ["aya", "yee", "u", "maa", "wyeoo"] 1 ["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] 3 입력받는 배열 안 문자열에서 주어진 4개의 발음을 한번씩만 사용해서 만들 수 있다는 것은, 문자열에 "aya", "ye", "woo", "ma" 단어를 제외한 다른 글자가 들어갈 수 없습.. 2023. 5. 30.
[C++] 평행 평행 점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다. [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요. 두 직선이 겹치는 경우(일치하는 경우)에도 1을 return 해주세요. 임의의 두 점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지지 않습니다. 주어진 두 선분이 평행하려면 기울기가 같고, y절편이 달라야 합니다. 이때 추가조건으로 두직선이 겹치는 경우에도 1을 반환하기 때문에 y절편은 고려하지 않습니다. 따라서 4개점 중 각각 두 점씩 쌍을 지어 두 선분을 만들고, 그 두 선분의 기.. 2023. 5. 25.
[C++] 연속된 수의 합 연속된 수의 합 연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요. total + (total - 1) + (total - 2) + ... + (total - num) 이렇게 num개 만큼 더한 수가 처음 total 값과 같은 경우를 생각합니다. total 값을 1씩 빼면서 반복해주면 됩니다. #include #include using namespace std; vector solution(int num, int total) { vector answer; int sum, total_tmp = total; wh.. 2023. 5. 24.
[C++] 치킨 쿠폰 치킨 쿠폰 프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요. 100마리를 주문하면 쿠폰이 100장 발급되므로 서비스 치킨 10마리를 주문할 수 있습니다. 10마리를 주문하면 쿠폰이 10장 발급되므로 서비스 치킨 1마리를 주문할 수 있습니다. 결국 100마리를 주문하면 총 100 + 10 + 1 마리를 주문하기 때문에 쿠폰으로 10마리가 되는 경우도 고려해야 합니다. #include #include using namespace std;.. 2023. 5. 23.
[C++] 다음에 올 숫자 다음에 올 숫자 등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요. 원소의 값이 음수가 될 수 있기 때문에, 등차수열인 경우와 등비수열인 경우에 예외조건인 경우를 고려하였습니다. 1. 배열이 등차수열인 경우 2. 등비수열일 경우에 2-1. 공비가 양수인 경우 2-2. 공비가 음수인 경우 3. 원소가 모두 0인 경우 이렇게 조건을 나누어 원소 3개를 비교하였습니다. #include #include using namespace std; int solution(vector common) { int answer = 0; if (common[1] - common[0] != common[2] - common[1]){ .. 2023. 5. 23.
[C++] 숫자 문자열과 영단어 2021 카카오 채용연계형 인턴십 코딩테스트 1번 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 입력받은 문자열 s와 출력 답 "one4seveneight" 1478 "23four5six7" 234567 "2three45sixseven" 234567 "123" 123 이 문제는 입력받은 문자열s 에서 zero~nine 에 해당하는 문자를 숫자로 바꾸어 출력하는 문제입니다. 영어 문자열을 찾.. 2023. 5. 23.