본문 바로가기

분류 전체보기

(274)
[프로그래머스 Level 1, C++] 크레인 인형뽑기 게임 문제 : 크레인 인형뽑기 게임 풀이 방법 스택은 넣은 순서 반대로 꺼내는 특징이 있기 때문에 쓰면 크레인으로 집은 인형들을 관리하기 쉬울 것 같아서 스택을 써봤는데 그냥 벡터로 했어도 문제 없었을 것 같다. 크레인으로 뽑은 인형의 자리는 0으로 채우기만 한다면 가볍게 풀 수 있는 문제이다. 소스 코드 #include #include #include using namespace std; int solution(vector board, vector moves) { int answer = 0; stack s; for(int & i : moves) { for(vector & u : board) { if(u[i-1] != 0) { if(s.empty() || s.top() != u[i-1]) { s.push(u[..
[프로그래머스 Level 1, C++] 실패율 문제 : 실패율 풀이 방법 answer 값으로 실패율을 넣는게 아니라 스테이지 단계를 넣어야 해서 이걸 어떻게 해야할까 하다가 2차원 배열을 만들고 0번째에는 스테이지, 1번째에는 실패율을 넣고 내림차순 조건으로 1번째만 보고 정렬을 한다면 하고 생각이 떠올라서 했는데 되어서 다행이었다. 실패율을 만드는 방법은 해당 단계 / 단계를 클리어한 플레이어 수로 만들면 되는데 스테이지를 전부 클리어한 경우도 있기 때문에 이 경우를 참고하고 클리어한 플레이어를 어떻게 구하면 될까 하고 생각을하다가 count_if로 해당 단계보다 큰 숫자를 가진 요소의 갯수를 더하면 쉽게 구할 수 있었다. count_if에서 비교할 변수는 지역변수로 넣으면 이상하게 오류가 나기에 전역변수로 빼줘야했다. 하다보니 ignal: flo..
[프로그래머스 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; }