전체 글 38

programmers 예상 대진표

programmerslevel2 예상 대진표위의 이미지를 클릭하시면 해당 문제로 이동합니다.#include #include using namespace std;int solution(int n, int a, int b){ int answer = 0; a--;//1~4까지 한 묶음이라고 할 때 4로 나눠둔 몫이 달라지기 때문에 0~3으로 바꿔주는 연산 b--; for(int i = 20; i>0; i--){ if(a/int(pow(2,i)) != b/int(pow(2,i))){answer=i+1;break;} } if(answer==0) answer=1; return answer;}해결 과정대진표를 그려가면서 2의 배수로 그룹을 가지고 같은 그룹안에 있을 ..

programmers 영어 끝말잇기

programmerslevel2 영어 끝말잇기위 이미지를 클릭하면 해당 문제로 이동합니다.#include #include #include using namespace std;vector solution(int n, vector words) { vector answer; unordered_map word_table; int wrong ,flag = 1; word_table.insert({words[0], 1}); for(int i =1; i해결 과정위의 코드는 algorithm라이브러리의 find함수를 이용해 해결한 후 다른 사람의 풀이에서 힌트를 얻어 unordered map을 추가로 활용한 코드이다. 제한 사항에서 단어들의 수가 100이하이기 때문에 배열 탐색을 아무리 많이해..

programmers N개의 최소공배수

programmerslevel2 N개의 최소공배수문제 설명주어진 숫자들의 최소공배수를 구하는 문제이다.#include #include #include using namespace std;int solution(vector arr) { int answer = 1; vector prime_num; for(int i = 2; i cnt(prime_num.size(), 0); for(int num : arr){ vector temp(prime_num.size(), 0); for(int i = 0; i해결 과정최소공배수를 어떻게 구해야 할지 헤매었다. 생각해낸 방법은 주어진 각각의 수들의 약수 중 소수의 개수를 구하고 그 소수들의 개수의 최대값끼리 곱하면 최소공배수가..

programmers 멀리 뛰기

programmerslevel2 멀리 뛰기문제 설명1과 2를 합해서 n을 만드는 데 순서를 고려한 모든 경우의 수를 구하는 문제이다.#include #include using namespace std;long long solution(int n) { long long answer = 0; vector fib; fib.push_back(1); fib.push_back(2); for(int i = 2; i 해결 과정n이 늘어날 때마다 패턴을 찾기 위해 계산해보았더니 피보나치 수열이어서 간단하게 해결하였다.

programmers 구명보트

programmerslevel2 구명보트문제 설명2인용 구명보트를 사용하여 다양한 몸무게의 사람들을 모두 탈출시키기 위해 필요한 최소한의 구명보트의 개수를 구하는 문제입니다.#include #include using namespace std;int solution(vector people, int limit) { int answer = 0; sort(people.begin(), people.end()); int i = 0, j = people.size()-1; while(j>=i){ if(people[i]+people[j]>limit){ answer++; j--; } else{ answe..

programmers 다음 큰 숫자

programeerslevel2 다음 큰 숫자문제 설명자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다.조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다.자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요.#include #include #include using namespace std;// 주석 무시int convert(int a){ string arr=""; ..

programmers 이진 변환 반복하기

programmerslevel2 이진 변환 반복하기문제 설명문자열 s에서 0을 제거하고 남은 문자열의 길이를 2진법으로 변환하는 과정을 반복하여 s가 "1"이 될 때까지 변환 횟수와 제거된 0의 총 개수를 구하는 문제입니다.#include #include using namespace std;pair re_convert(pair cnt_pair, string str){ int temp_size = 0; string temp = ""; for(char i : str) i == '1' ? temp_size++ : cnt_pair.second++; for(int i = 17 ; i>=0; i--){ //2^17==131,072 int digit = (temp_size>>i)&..

C++ <cctype>과 삼항연산자

C++ 과 삼항연산자프로그래머스에서 JadenCase문자열을 만들면서 다른사람의 풀이를 통해 알게 된 내용 중 cctype 라이브러리와 삼항연산자에 대한 내용이다.주요 기능문자 분류isalpha: 알파벳 문자인지 확인 (a-z, A-Z)isdigit: 숫자 문자인지 확인 (0-9)isalnum: 알파벳 또는 숫자 문자인지 확인islower: 소문자 알파벳 문자인지 확인isupper: 대문자 알파벳 문자인지 확인isspace: 공백 문자인지 확인 (스페이스, 탭, 줄바꿈 등)ispunct: 구두점 문자인지 확인isxdigit: 16진수 숫자 문자인지 확인 (0-9, a-f, A-F)isprint: 출력 가능한 문자인지 확인isgraph: 출력 가능하고 공백이 아닌 문자인지 확인iscntrl: 제어 문자인..

C++ 2024.07.03