[C_C++]코딩테스트 연습/[프로그래머스] level 1

    [C++] 프로그래머스 - 다트 게임

    [C++] 프로그래머스 - 다트 게임

    내 풀이 string을 돌면서 숫자면 score에 담는다. 숫자가 이어서 나올 경우 먼저 나온 수가 10의자리로 밀리도록 했다. 숫자가 나왔을 때는 score을 0으로 초기화하지 않고 다시 돌려서 이후에도 쓸 수 있게 해줬다. 특수문자, 특히 *이 나왔을 때는 앞의 숫자까지 2배가 돼야한다. 처음에 *이 나왔을 경우 자신만 2배가 되게 했다. #include #include using namespace std; int solution(string dartResult) { int answer=0; vector with_bonus; int score = 0; for (int i = 0; i = '0' && dartResult..

    [C++] 프로그래머스 - 비밀지도

    [C++] 프로그래머스 - 비밀지도

    내 풀이 배열의 수를 이진법 string으로 만든다. 나머지로 나오는 숫자는 모두 char로 뽑아서 붙인 다음 리버스해줬다. 이진수들은 string 배열에 차례로 넣고 둘 중에 하나라도 1이면 벽, 즉 #을 넣고 아니면 공백을 담는다. #include #include #include using namespace std; vector solution(int n, vector arr1, vector arr2) { vector bin1, bin2; vector combine; //이진법 만들기 for (int i = 0; i < n; i++) { string tmp1, tmp2; for (int j = 0; j < n; j++) { //일의자리부터 들어감 tmp1.push_back(arr1[i] % 2 + '..

    [C++] 프로그래머스 - 3진법 뒤집기

    [C++] 프로그래머스 - 3진법 뒤집기

    내 풀이 모든 진수는 십진수를 해당 진법 수로 나눈 나머지를 일의자리부터 차례로 넣어 구할 수 있다. (주어진 십진수는 몫으로 갱신 필요) 나머지를 순서대로 push하면 일의자리부터 넣었기 때문에 역순으로 꺼내쓸 수 있다. v[i]와 곱해줘야 하는 거듭제곱의 증감이 달라 cnt를 따로 선언해줬는데, 이게 싫다면 reverse(v.begin(), v.end())를 해서 사용해도 된다. #include #include #include using namespace std; int solution(int n) { int answer = 0; vector v; while (n != 0) { v.push_back(n % 3); n /= 3; } int cnt = v.size()-1; for (int i = 0; i..

    [C++] 프로그래머스 - 실패율 (pair, sort - bool)

    [C++] 프로그래머스 - 실패율 (pair, sort - bool)

    내 풀이 stages에 실패한 스테이지들이 적혀있다. 1스테이지에서 실패한 사람은 2스테이지부터는 도달하지 못한 것. → challenged(스테이지 도달 플레이어 수) 변수는 전체 사용자 수에서 시작해서 누적으로 뺐다. → failed(실패한 플레이어 수) 변수는 0으로 두고 매 스테이지마다 초기화하면서 셌다. failure_rate(실패율)은 벡터에 실패율(double)과 스테이지(int)를 각각 key, value로 담았다. 실패율이 같을 때는 스테이지의 오름차순으로 정렬하고, 나머지는 내림차순으로 정렬하게 bool로 정해줬다. 해당 스테이지에 도달한 플레이어 수가 0일 때는 0으로 나눌 수 없으므로, 예외처리해서 failure_rate에 직접 0을 넣어줘야 했다. pair를 새롭게 써보면서 여러 ..

    [C++] 프로그래머스 - 숫자 문자열과 영단어

    [C++] 프로그래머스 - 숫자 문자열과 영단어

    내 풀이 주요 포인트 ) string에 char를 붙인다. int에 숫자를 하나씩 붙이려면 10을 곱해서 붙이면 된다. answer에 숫자를 붙이고 나면 tmp는 비운다. 이를 위해 문자가 완성되지 않았을 때는 else continue 를 주었다. char를 숫자로 바꾸려면 '0'을 빼주면 된다. #include #include using namespace std; int solution(string s) { int answer = 0; string tmp; for (int i = 0; i = 'a' && s[i]

    [C++] 프로그래머스 - 약수의 개수와 덧셈

    [C++] 프로그래머스 - 약수의 개수와 덧셈

    내 풀이 월간 코드 챌린지 시즌2 => 쉬운 문제 #include #include using namespace std; int solution(int left, int right) { int answer = 0; for(int i = left; i

    [C++] 프로그래머스 - 로또의 최고 순위와 최저 순위

    [C++] 프로그래머스 - 로또의 최고 순위와 최저 순위

    내 풀이 이번 건 좀 괜찮게 푼 것 같다! iterator 와 find 함수를 사용해당첨번호와 같은 값을 내 로또번호에서 찾으면 worst와 best에 모두 더해주고, 내 로또번호에 0이 있으면 그 개수만큼 best에만 더해줬다. 일치하는 번호를 세는 데 사용했던 worst와 best 변수의 값은 switch를 이용해 순위로 재할당해줬고, 그 순위를 answer에 차례로 넣어줘서 반환했다. #include #include #include using namespace std; vector solution(vector lottos, vector win_nums) { vector answer; int worst = 0, best = 0; for (int i = 0; i < win_nums.size(); i++..

    [C++] 프로그래머스 - 예산

    [C++] 프로그래머스 - 예산

    내 풀이 ㅠㅠ서버 끊겨서 새로고침 했더니 채점된 코드라고 점수가 안 떴다... 정렬해서 더하면 되는 간단한 문제! #include #include #include #include using namespace std; int solution(vector d, int budget) { int answer = 0; int temp = 0; sort(d.begin(), d.end()); for (int i = 0; i < d.size(); i++) { if (temp + d[i]