[Programmers] Level 1. 크레인 인형뽑기 게임 (C++)
2021. 3. 22. 16:23
알고리즘/Programmers
풀이 방법 문제를 이해한 내용에 대해서 간단하게 수도코드로 설명하자면 1. 크레인의 위치를 확인하고 순서대로 인형을 뽑는다. 2. 인형을 꺼낼 위치에 있는 인형 중 가장 위에 있는 인형을 꺼낸다. 3. 인형을 꺼내어 다른 바구니에 순서대로 담는다. 4. 만약 바구니의 가장 위에 있는 인형과 같다면 4-1. 바구니의 가장 위에 있는 인형을 꺼낸다. 5. 바구니의 가장 위에 있는 인형과 다르다면 5-1. 바구니에 인형은 담는다. 6. 인형을 꺼낸 위치에 인형이 없다고 표시한다. 이런 과정으로 이해했다. 이런 과정을 통해 아래의 코드를 짰다. 문제를 푸는 과정에서 인형을 뺐으면 인형이 없는 것처럼 0으로 초기화 해줘야 하는데 0으로 초기화해주지 않아서 잘못된 결과를 가져왔었다. 그래서 cout 으로 한 구문씩..
[Programmers] Level 1. 체육복 (C++)
2019. 7. 26. 00:00
알고리즘/Programmers
정리 정말 많은 고민을 했던 문제였다. 처음에 문제를 보고나서 어떻게 풀지 고민을 했는데 2가지 방법이 생각이 났다. 첫 번째는, 체육복이 있으면 1, 체육복이 없으면 0, 여벌의 체육복이 있으면 2 로 정해두고 여벌의 체육복이 있는 학생의 수를 1 감소하고 없는 학생의 수를 1로 증가시켜서 마지막에 1인 학생의 수를 세서 출력하는 방법이다. 두 번째는, 체육복이 없는 학생을 일단 제외하고 여벌의 체육복이 있는 학생의 것을 빌려주면서 카운트를 더하는 방식이었다. 결과는 두 번째 방법으로 풀었는데 2~3시간 가량 고민 끝에 해결한 문제였다. 이 문제를 이렇게 풀어보았다. 1) 체육복을 잃어버린 학생과 여벌의 체육복이 있는 학생이 같다면 제외시켜준다. 2) 전체 학생에서 체육복을 잃어버린 학생을 빼준다. 3..
[Programmers] Level 1. 모의고사 (C++)
2019. 7. 25. 23:24
알고리즘/Programmers
정리 수포자 3명이 있고, 3명이 각각 정해진 규칙에 맞춰 답을 작성해서 제출한다. 1번부터 답이 정해져있기 때문에 규칙적으로 반복되는 정답의 갯수를 이용해 정답을 체크해준다. 정답의 갯수가 정해져 있어 그 수만큼 반복되기 때문에 나머지를 구해서 맞은 정답의 갯수를 구해준다. 정답일 때, 카운트를 세어주고 문제에서 가장 많은 정답을 맟춘 학생을 출력해야하기 때문에 카운트가 많은 수포자를 answer 에 넣어준다. 따라서, 이 문제는 이렇게 풀어보았다. 1) 수포자가 정해진 답을 계속해서 반복한다는 점. 그리고 수포자는 어떤 문제가 나와도 이 정답만 제출한다. 2) 정답이 반복되기 때문에 반복되는 정답의 갯수를 구한다. 3) 반복되는 정답의 갯수가 5개이고, 7번 문제라면 7를 5로 나눈 나머지인 2 번째..
[Programmers] Level 1. 소수의 합 (C++)
2019. 7. 25. 22:50
알고리즘/Programmers
정리 소수를 구하는 문제였다. 소수를 구하는 방법 중 가장 많이 알려져있는 알고리즘은 에라토르테네스의 체 다. 에라토스테네스의 체를 간단하게 설명해보면, 2부터 시작한다. 그리고 2부터 자신을 제외한 자신의 배수를 제거한다. 2를 제외한 2의 배수를 제거하고, 3을 제외한 3의 배수를 제거하고, 4는 2의 배수이기 때문에 이미 제거가 되어있다. 이미 제거가 되어있는 수들은 건너뛰고 진행한다. 위와 같은 과정을 반복하면 남아있는 숫자는 소수가 될 것이다. 따라서, 에라토스테네스의 체를 이용해서 풀면 쉽게 풀 수 있는 문제였다. 소스 코드 #include using namespace std; long long solution(int N) { long long answer = 0; vector m; for(i..