본문 바로가기

프로그래머스 풀이

(50)
프로그래머스 - [1차] 다트 게임 문자열을 받아 처리하는 문제, 생각흐름은 다음과 같다. 1. 반드시 숫자, 알파뱃(S, D, T) 특수문자(*, #) 순으로 들어온다. 2. 바뀌는 건 숫자이다. 그러므로 숫자만 벡터에 추가해둔다. 3. 알파뱃이 들어오면 추가해둔 벡터의 숫자를 바꿔준다. 이때 인덱스 관리를 잘 해줘야한다. 난 지금 벡터 사이즈 - 1로 두었다. 4. 특수문자는 들어올 때도 있고 안들어올 때도 있다. 들어오면 이전 문자와 지금 문자를 처리해준다. 5. 예외처리로 10이 들어오면 1, 0 으로 확인되기 때문에 버그가 발생한다. 이때는 1이 들어오면 뒤의 문자가 0인지 판단하고 벡터에 10을 추가하는 예외 로직을 만들었다. 다른 사람들 풀이를 보니 sstream 을 사용하여 간단히 푼 사람도 있었고 regex? 을 사용한 사..
프로그래머스 - 점프와 순간이동 (C++) 처음엔 최소값을 구하는거고 백준에서 비슷한 워딩의 문제를 본 적이 있어서 BFS인 줄 알았다. 이 문제는 0에서 시작해서 걷거나 순간이동 두가지 조건이 있는것으로 보인다. 그러나 처음 몇 걸음을 걸어야할지 알수없다. 한발짝씩 가서 모든 조건을 새어보는 것은 불가능하다. 그러나 목적지 입장에서 생각해보면 이전의 수에서 x2 되었거나 +1 되었거나 둘중 하나이다. x2는 비용이 0이기 때문에 이왕이면 x2 를 많이 사용해야한다. 그러므로 n이 짝수이면 나누기2 홀수이면 빼기 1 하면서 0까지 얼마나 걸리나 계산하면 된다. #include using namespace std; int solution(int n) { int ans = 0; while(true){ if(n % 2 == 0){ n = n / 2; ..