본문 바로가기

코딩 테스트/프로그래머스

(64)
[프로그래머스 Level 1, C++] [1차] 다트 게임 문제 : [1차] 다트 게임 풀이 방법 벡터 배열을 하나 만들어서 dartResult를 전부 분해해서 다시 넣었다. 왠지 그렇게 하는게 조건문을 만들 경우 편할 것 같아서 그랬다. 문자열 10은 아스키코드가 따로 없다보니 1이 나오고 그다음 숫자가 0이면 10을 넣고 두칸 건너뛰는 방식으로 분해를 했고 answer 벡터를 만들고 int temp를 만들어서 SDT*#을 각각 계산해주고 temp를 answer 벡터에 넣고 마지막 answer에 answer 벡터의 값을 다 더해주는 방식으로 문제를 풀었다. *#이 나올때가 있고 안나올 때가있으며 10이라는 숫자가 나올 수 있으니 그걸 어떻게 해야할까 고민하는데 시간을 썼고 숫자를 어떻게 인식할지 거기에 시간을 많이 쓴거같다. 소스 코드 #include #inc..
[프로그래머스 Level 1, C++] 로또의 최고 순위와 최저 순위 문제 : 로또의 최고 순위와 최저 순위 풀이 방법 for문을 돌려서 lottos와 win_nums에 동일한 숫자가 있거나 lotts에 0이 있으면 미리 만들어 놓은 배열에 추가한다. 최고 순위는 배열의 크기 그 자체이고 최저 순위는 배열 요소에서 0을 제외한 나머지 크기이다. count_if()를 이용해서 0을 제외한 나머지 크기를 구하고 스위치문으로 등수를 구했다. 소스 코드 #include #include #include using namespace std; vector solution(vector lottos, vector win_nums) { vector answer; vector same_num; for(int & i : lottos) { for(int & u : win_nums) { if(i ..
[프로그래머스 Level 1, C++] [1차] 비밀지도 문제 : [1차] 비밀지도 풀이 방법 지도 두개를 겹치면 나오는 결과로 비밀지도를 풀어야 하는 컨셉의 문제이다. 지도 각 칸이 둘중 한 곳이라도 1이면 완성된 지도에서 1이 된다고 하는데 OR연산이 딱 맞다. | 연산을 해서 int temp에 넣고 그것을 2진법으로 만든 다음 string str에 1이면 #을 넣고 0이면 공백을 넣으면 된다. 2진법을 계산한 결과를 거꾸로 만들어야해서 stack을 써봤다 stack의 넣은 순서 반대로 나와야 하는 성질을 이용했다. 소스 코드 #include #include #include using namespace std; vector solution(int n, vector arr1, vector arr2) { vector answer; stack s_str; for..
[프로그래머스 Level 1, C++] 내적 문제 : 내적 풀이 방법 for문으로 해당 공식을 대신 쓰면 된다 소스 코드 #include #include using namespace std; int solution(vector a, vector b) { int answer = 0; for(int i=0; i
[프로그래머스 Level 1, C++] 같은 숫자는 싫어 문제 : 같은 숫자는 싫어 풀이 방법 set 같은거 안쓰고 순수 for문과 if문으로... 소스 코드 #include using namespace std; vector solution(vector arr) { vector answer; int temp = -1; for(int & i : arr) { if(temp != i) { answer.push_back(i); } temp = i; } return answer; }
[프로그래머스 Level 1, C++] 정수 제곱근 판별 문제 : 정수 제곱근 판별 풀이 방법 math 라이브러리의 함수를 잘 사용해보자 소스 코드 #include long long solution(long long n) { long long solution, x; x = sqrt(n); if(pow(x,2) == n) return pow(x+1,2); else return -1; }
[프로그래머스 Level 1, C++] 자릿수 더하기 문제 : 자릿수 더하기 풀이 방법 n % 10을 하면 자릿수가 나온다 소스 코드 #include using namespace std; int solution(int n) { int answer = 0; while(n!=0) { answer += n % 10; n /= 10; } return answer; }
[Level 1, C++] 두 정수 사이의 합 #include #include using namespace std; long long solution(int a, int b) { long long answer = 0; if (a == b) answer = a; else if (a > b) { for (int i = b; i a) { for (int i = a; i