전체 글(157)
-
[프로그래머스] 2 x n 타일링 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2 x 1의 타일을 가지고 2 x n의 바닥을 채우는 문제이다. 나의 풀이 전략 동적 계획법으로 푼다. 상세 바닥이 2 x 1이라면, 채우는 경우의 수는 1이다. 바닥이 2 x 2이라면, 채우는 경우의 수는 2이다. 이제 이 두 가지 크기의 바닥을 기반으로 점화식을 세울 수 있다. 크기가 2 x n인 바닥을 채우는 경우의 수를 DP[n]이라 하자. 바닥이 2 x n이라면, 1) 먼저 2 x 1만큼 맨 오른쪽을 채운다. 그리고 나머지 왼쪽을 채운다. 1)의 경우의 수는 바로 DP[n - 1]과 같다. 2)..
2023.01.03 -
[프로그래머스] JadenCase 문자열 만들기 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문자열 s가 주어지면 공백을 기준으로 단어를 나눈다. 단어의 맨 처음 글자는 대문자, 나머지 글자는 소문자로 반환하는 문제였다. 원래 내가 쓴 풀이가 있는데, 몇몇 TC에서 실패를 내보냈다. (뒤에서 참고) 그래서 타인의 훌륭한 풀이를 참고하였다. 풀이 전략 첫 글자를 대문자화해서 answer에 담는다. 두번째 글자부터 for 문으로 공백을 찾아서 변환해간다. 상세 1. answer에 s의 첫 번째 글자를 대문자화 해서 담는다. 더보기 answer += toupper(s[0]); 2. 두 번째 글자부터 ..
2022.12.26 -
[프로그래머스] 다음 큰 숫자 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주어진 n보다 크면서 n과 비트의 수가 같은 자연수를 찾는 문제였다. 나의 풀이 전략 1. 비트의 갯수를 세주는 getBitCount() 함수를 선언한다. 2. n + 1부터 while 문을 돌린다. 상세 1. 자연수 n에 대해서 비트의 수를 반환하는 getBitCount() 함수를 선언한다. 더보기 int getBitCount(int n) { int answer = 0; return answer; } 2. 1을 비트단위로 하나씩 옮겨가며 비트가 겹치면 반환값(answer)을 추가해준다. int getB..
2022.12.26 -
[프로그래머스] 다리를 지나는 트럭 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 트럭 여러 대가 다리를 지나는데 트럭들은 길이가 1이라고 생각하고 다리의 길이는 bridge_length, 무게 제한은 weight인 조건에서 모두 지나가는데 걸리는 시간을 계산하는 문제이다. 나의 풀이 전략 1. while 문으로 시간을 계산한다. 2. 다리 위에 있는 트럭들을 큐(onBridge)로 구현한다. 3. 큐의 맨 앞 쪽 차량을 내보내면서 다음 차량이 들어올 수 있다면 다리 위에 올린다. 상세 0. answer 보단 time이 더 직관적이다. truck_weights보단 Deque 형식의 w..
2022.12.23 -
[프로그래머스] 숫자의 표현 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 연속하는 자연수들의 합이 n이 되는 경우의 수를 세어주는 문제이다. 문제에서 주어진 예제처럼 n이 15로 주어지면 위와 같이 표현된 경우의 수인 4를 리턴해야 한다. 나의 풀이 전략 자연수의 합(등차수열의 합)을 이용하여 푼다. 상세 1. 연속된 자연수의 첫번째 수를 i, 마지막 수를 j라고 하자. (i ≤ j) 그럼 다음과 같이 표현할 수 있을 것이다. 이제 위, 아래의 식을 각각 좌변과 우변끼리 더하면 다음과 같다. 우변의 (i + j) 항이 몇 개가 있을까? 바로 (j - i + 1)개 만큼 있다...
2022.12.23 -
[프로그래머스] 크레인 인형 뽑기 | C++
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 크레인의 위치가 주어지면 board 안에 있는 인형을 바구니로 옮겨담아서 바구니 안에 연속으로 같은 인형이 담기면 갯수를 더하는 문제였다. 나의 풀이 전략 1. 크레인의 위치에 따라 인형을 뽑고 바구니에 옮겨담는 PickandDrop()이란 함수를 만들었다. PickandDrop()에서 인형의 갯수도 세어나갈 것이다. 2. solution()에 인수로 주어진 moves를 따라 PickandDrop()을 실행한다. 상세 1. PickandDrop()은 인형의 나열정보(board)와 크레인의 위치(move)..
2022.12.22