목록알고리즘 (547)
N
long long형의 정수 n을 내림차순으로 배치해야 한다. 우선 각 자릿수를 구하여 v 벡터에 저장을 해준다. 이때 v벡터는 long long 형이 아니어도 된다..! 1자리 수를 저장하면 되기 때문..! while문을 통해 각 자릿수를 구하면 sort함수를 통해 오름차순으로 정렬을 한다. 그 후 for문으로 10의 i 승 * v[i]를 해주면 된다..! 예시를 들자면 1) 118372를 while문을 통하여 1 1 8 3 7 2로 v 벡터에 저장을 한다. 2) sort함수를 통해 1 1 2 3 7 8 로 정렬을 한다. 3) i = 0일 때, 10의 0승 * v[0] = 1 * 1 i = 1일 때, 10의 1승 * v[1] = 10 * 1 i = 2일 때, 10의 2승 * v[2] = 100 * 2 ...
자릿수 더하기 문제와 똑같은 유형이다..! while문으로 n이 0보다 작아질 때까지 반복한다. answer가 벡터이므로 push_back을 통해 값을 넣어주고, 나머지 연산을 이용하면 n을 뒤집어서 넣을 수 있다..! #include #include using namespace std; vector solution(long long n) { vector answer; while(n > 0) { answer.push_back(n % 10); n /= 10; } return answer; }
각 자릿수의 합을 구하는 문제..! while문으로 n이 0보다 클 때까지 돌고, n을 10으로 나눴을 때 나머지 값을 answer에 계속 더해준다. 그 후 n을 10으로 나누고 이 값을 n에 저장하면 각 자릿수를 구할 수 있다. #include using namespace std; int solution(int n) { int answer = 0; while(n > 0) { answer += n % 10; n /= 10; } return answer; }
알파벳 문자열을 다루는 문제..! 대소문자를 구분하기 때문에 따로 처리를 해줘야 한다. 또한 해당 알파벳 + n이 'z'나 'Z'를 넘어가게 되면 'a'나 'A'부터 시작해서 나머지 수만큼 밀어주면 된다..! 본인은 나머지 연산을 이용하여 알파벳을 밀어주었다. 나머지 연산을 이용하면 대소문자 구분만 해주면 되기 때문에 간단하게 풀 수 있다..! #include #include #include using namespace std; string solution(string s, int n) { string answer = ""; for(int i = 0; i = 'a' && s[i]
1부터 n까지 for문을 돌면서 홀수번째는 "수"를 붙이고 짝수번째는 "박"을 answer에 붙이면 끄으읏! 간단간단..! #include #include using namespace std; string solution(int n) { string answer = ""; for(int i = 1; i
소수 찾는 기본적인 문제..! 종종 알고리즘 문제를 풀다보면 나오는 것 같다..! 그래서 풀이 형태를 외워두는 게 나을 것 같다..! 전역 변수로 1000001 크기의 bool 형태 배열을 선언해준다. 2부터 n까지 for문을 돌면서 prime[i]가 false이면 소수이고, 소수의 배수는 소수가 아니기 때문에 true로 바꿔준다. '에라토스테네스의 체' 알고리즘을 사용했다. https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4 에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 수학에서 에..
이 문제 또한 문자열 다루는 기본 문제같다..! 초보자도 쉽게 풀 수 있는 문제..! 우선 answer에 "김서방은 "을 넣어준다. for문을 이용해 "Kim"을 찾고, 그 위치를 string 형태로 변환하여 answer에 넣어준다. 마지막으로 "에 있다"를 넣어주면 끄으으읏..! #include #include #include using namespace std; string solution(vector seoul) { string answer = "김서방은 "; for(int i = 0; i < seoul.size(); i++) { if(seoul[i] == "Kim") { answer += to_string(i); break; } } answer += "에 있다"; return answer; }
문자열 문제 중 가장 기본이라고 생각하는 문제..! 어렵지 않아서 쉽게 풀 수 있다고 생각한다. 문자열의 길이부터 검사하고, 길이가 4 또는 6이 아니면 바로 false를 리턴. 길이가 4 또는 6이면 숫자로만 이루어져 있는지 검사해준다. #include #include using namespace std; bool solution(string s) { if(s.size() == 4 || s.size() == 6) { for(int i = 0; i = '0' && s[i]