목록프로그래머스 알고리즘/1단계 (50)
N
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cVeDqt/btqDKTWdUPP/HvXlxjYuGFxFYD9SdwA0GK/img.png)
단어 별 인덱스의 따라 대소문자로 변환하는 문제..! 대문자로 변환해주는 toupper()함수와 소문자로 변환해주는 tolower()함수를 이용하면 쉽게 풀 수 있다. 또한 단어마다 0번째 인덱스부터 시작하니 이것만 처리해주면 풀 수 있는 문제..! count 변수를 이용하여 단어의 인덱스 위치를 체크해주고, 띄어쓰기가 나오면 count를 0으로 초기화하여 새로운 단어의 인덱스부터 시작한다..! #include #include using namespace std; string solution(string s) { string answer = ""; int count = 0; for(int i = 0; i < s.size(); i++) { if(s[i] == ' ') { count = 0; answer.p..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vnwDD/btqDEGqjc3E/bvV3X748KUuO5WkUkBnjiK/img.png)
알파벳 문자열을 다루는 문제..! 대소문자를 구분하기 때문에 따로 처리를 해줘야 한다. 또한 해당 알파벳 + 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]
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b42oAu/btqDF1HaLPA/NF294ZZAzeygvufuitLIs1/img.png)
문자열을 정수로 바꾸는 간단한 문제..! atoi 함수를 사용하였는데, 이 함수는 다른 알고리즘 문제에서도 많이 쓰이는 함수라서 외우는 게 좋을 것 같다..! atoi와 c_str()에 관해 설명이 잘 돼있는 블로그가 있으니 참고하면 되겠다..! https://blockdmask.tistory.com/39 [C++] string 클래스 변환(atoi, c_str()) 등 정리 C++에서 string, char *, int 간의 변환에 대해서 알아보겠습니다. (char* -> int 로 바꾸는 것을 보고싶다면, [바로가기]) (string -> int 로 바꾸는 것을 보고싶다면, [바로가기]) (int -> string 으로 바로 바.. blockdmask.tistory.com #include #inclu..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cVaXgQ/btqDGf6htbL/ffTEPbtSKebwmhfBomEsvK/img.png)
1부터 n까지 for문을 돌면서 홀수번째는 "수"를 붙이고 짝수번째는 "박"을 answer에 붙이면 끄으읏! 간단간단..! #include #include using namespace std; string solution(int n) { string answer = ""; for(int i = 1; i
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/MbJMA/btqDFqmTJ4k/3m1yjqiorsVc66i2BthJK0/img.png)
소수 찾는 기본적인 문제..! 종종 알고리즘 문제를 풀다보면 나오는 것 같다..! 그래서 풀이 형태를 외워두는 게 나을 것 같다..! 전역 변수로 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 에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 수학에서 에..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/mYk7Z/btqDGHIeGYB/LBkmuOPBUlNgKhad8rjWP1/img.png)
이 문제 또한 문자열 다루는 기본 문제같다..! 초보자도 쉽게 풀 수 있는 문제..! 우선 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; }
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/eoPc7X/btqDDYR9F34/dvLJk5KBbaHjKkKykFOr6K/img.png)
문자열 문제 중 가장 기본이라고 생각하는 문제..! 어렵지 않아서 쉽게 풀 수 있다고 생각한다. 문자열의 길이부터 검사하고, 길이가 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]
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/tSFIv/btqDDvIVYKh/T3nCzNtuWre37L1qKhssHk/img.png)
algorithm 헤더에 있는 sort 함수를 이용하는 문제..! 단, sort함수는 기본적으로 오름차순으로 정렬하는 함수이기 때문에 내림차순으로 정렬해야하는 함수를 따로 정의해줘야 한다. 그래서 desc 함수를 만들어주었다..! 내림차순으로 정렬해야하는 문제가 여러개 있으니 외워두면 많이 쓸 수 있다...! 이와 별개로 sort를 다른 방식으로 정렬해야하는 문제가 있을 수 있으니, 적절하게 변경해서 사용하면 많은 도움이 된다..! #include #include #include using namespace std; bool desc(char a, char b) { return a > b; } string solution(string s) { string answer = ""; sort(s.begin()..