sk 하이닉스 코테 준비(3)
-
프로그래머스 단어퍼즐 c++
처음에는 완전 탐색으로 구현할까 생각했지만, 테스트케이스를 보고 dp로 풀어야겠다고 생각했다. 점화식은 다음과 같다. dp[i] = i번째 string까지 만들 수 있는 최소비용 d[i] ~ d[t.size()-1] 까지 순회를 돌면서 각각의 strs 원소가 들어가는지 확인하고, 들어가면 dp[i] = min(dp[place-1]+1, dp[i])로 최소비용을 업데이트해준다. 그리고 첫번째 값의 경우에는 dp[place-1] 값이 존재하지 않는다. 이럴때는 1로 초기화해준다. 왜냐하면 banana 에서 b라면 최초의 경우라 1로 값이 설정되기 때문이다. 이렇게 dp로 풀어야한다. 처음에 이렇게 풀었지만, 효율성조건을 만족하지 못했다. 이는 c++ string의 시간이 오래걸리기 때문이다. 처음에는 주석처..
2023.09.29 -
백준 11005 진법 변환 2 C++
이 문제 역시 간단한 구현 문제였다. 아스키코드 표가 잘 기억나지 않아서 스트링으로 변환해야하는숫자들을 담아놨다. N진법으로 나타내는 방법은, 숫자를 N으로 나눈 다음에 나머지를 역순으로 읽으면 되기 때문에 c++에서 제공해주는 스택 라이브러리를 사용했다. N으로 나눈 다음에 반대방향으로 읽었다. 이렇게 하니 정답코드가나왔당 #include #include using namespace std; int N, B; stack s; string convert = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int main(void){ cin.tie(NULL); ios::sync_with_stdio(false); cin>>N>>B; /* 10이면 A, 11이면 B, 이런식으로출력이되어..
2023.09.29 -
백준 1913 C++
단순 구현 문제이다. 나는 배열을 만든다음에 가운데부터 하나씩 숫자를 채워가는 식으로 문제를 풀었다. 규칙을 보고 풀면 되는 문제인데,방향을 두번 바꾼다는 점,그리고 마지막 숫자는 첫번째 방향전환에서 이뤄진다는 점을 고려해서 문제를 풀었다. 한번문제를 틀렸는데, 그 경우는 찾아야하는 숫자가 1인 경우였다. 이 부분을 고쳐서 제출해서 풀었다. #include using namespace std; int N, findNum; int dx[4] = {0, 1, 0, -1}; int dy[4] = {-1, 0, 1, 0}; int x, y; int arr[1000][1000]; void solve(void){ int sx = N/2; int sy = N/2; int num = 1, dir = 0, moveCnt..
2023.09.29