본문 바로가기

코딩

(102)
백준 2156 포도주 시식 이 문제는 조금 의미가 있었다고 할까.. 일단 문제를 처음 보고 든 생각은 뭔 개소리지.. 였는데, 잘 보니까 계단 오르기 문제랑 비슷한거 같더라 근데, 설마 완전 같은 문제일까.. 하고 곰곰히 생각해보니 이건 계단 오르기 문제랑 다르게 '더블점프뿐만 아니라 트리플 점프도 허용하고, 마지막 계단을 밟지 않아도 돼는' 계단 오르기 문제 이더라 쿼드라점프.. 그러니까 한번에 4계단 오르는 점프도 가능하지만, 그렇게 뛸 바에는 중간에 밟는게 당연히 이득이다. 음수가 없으니까! 트리플 점프를 하는 경우는 예를 들어 99 99 1 1 99 99 이런 경우 구구(구구단 아님 ㅎ) 먹구 구구 먹구 트리플 뛰어서 구구 먹구 구구 먹구 하는게 젤 많이 마시는거니까, 이런 상황에서만 트리플점프를 쓴다. 그리고 마지막 계단..
백준 1005 ACM Craft 처음에 이 문제의 정답률이 17%인걸 안보고 호옹 잼겠다 싶어서 그냥 푼 문제 근데 그냥 풀었더니 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 이게 DP 처음 푼 문제였는데 난 원래 C#을 좋아하는 사람이여서 C#으로 풀었더니 시간초과에 메모리 초과에.. 4번이나 틀려서 C++로 고쳤다 그리고 C++로 고쳐서 for each를 썼더니 비쥬얼스튜디오에선 잘돼던게 컴파일 에러가 뜨더라 이때 이후로 비쥬얼 스튜디오를 거르고 코드블록을 쓴다. 근데 비쥬얼 스튜디오가 편하긴 편한데..... 그냥 한번 틀리면 돼는데 굳이 불편한 코드블록 써야돼나 싶기도 하고... 고민중 이건 첨 제출한 C#코드 using System; using System.Collections.Gene..
백준 2579 계단 오르기 진짜 이거 첨에 문제를 잘못읽어서 세번 연속으로 밟을 수 없다 를 세번 연속으로 한칸 씩 뛸 수 없다 라고 생각해서 #include #include #include using namespace std; vector stair; vector memo_canSingle; vector memo_cannotSingle; int solve(int nowStair, int prev) { bool canSingleJump = true; if (abs(nowStair - prev) == 1 ) { canSingleJump = false; } if (nowStair == 0) { return memo_canSingle[0]; } if (nowStair == 1) { if (canSingleJump) return memo..
백준 1463 1로 만들기 #include #include #include using namespace std; int memo[1000001]; int main() { int n; cin >> n; int count = 0; //cout
백준 10844 쉬운 계단 수 아니 왜 이 스킨은 글쓰기 버튼이 없는거지 내가 못찾나 아 깔끔해서 다 좋은데 글쓰기 버튼이 없어 왜ㅠㅠ 힝 어쨋든...... 쉬운 계단 수 문제이다 쉬운.... 쉽지 않았다 이전 숫자에 대해 그 다음 숫자가 적절하게 오는 경우의 수만 계산 하면 돼겠다! 라고 생각하고 햐! 쉽네! 라고 생각했는데 0 이라는 복병이.. 그래서 이전 자리에 오는 수가 무엇이냐에 따라 다르게 생각했다 이전 자리가 0이면 다음 자리에 1이 오고 이전 자리가 1이면 다음 자리에 0이나 2가 오고 이전 자리가 2이면 다음 자리에 1이나 3이 오고 .... 이전 자리가 8이면 다음 자리에 7이나 9가 오고 이전 자리가 9이면 다음 자리에 8이 온다 점화식을 써보면 DP(0, len) = DP(1, len -1)DP(1, len) =..
백준 2293 동전1 재귀로 호출했고 int[10001][101]을 메모이제이션으로 이용. 풀이방식은 DP(won,k) = DP(won - C[k] * 1) + DP(won - C[k] * 2) + ... + DP(won - C[k] * (won/C[k]) ) 라고 생각해서 고대로 나타냈다. won은 돈, C[k]는 k번째 코인의 가격이다. 근데 이대로 풀어서 맞으려면 coinWorth배열, 즉 동전의 가격을 정렬해야 하는데, 왠지 입력을 오름차순으로 친절하게 줄것 같아서 그냥 제출했다. 오답뜨면 그때 오름차순 해보지 머~ 하고 대충 생각함 ㅎ 메모이제이션으로 활용한 배열인 memo[i][j] 는 'j개의 코인으로 i돈을 만들기 위한 가짓 수'이다 처음 시도한 코드. #include using namespace std; in..