Skip to content

Conversation

@Oing2152
Copy link
Collaborator

백준문제

/* 11057 오르막 수
오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다.
예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다.
수의 길이 N이 주어졌을 때, 오르막 수의 개수를 구하는 프로그램을 작성하시오. 수는 0으로 시작할 수 있다.
출력 : 첫째 줄에 길이가 N인 오르막 수의 개수를 10,007로 나눈 나머지를 출력한다.
->처음에 출력에 그냥 10007로 나눈 나머지를 출력하라길래 이렇게 쉬울리가 없는데 하고 푸니 역시 ㅋㅋ,,,
그 뒤로 오른차순(크기순)으로 되는 숫자들을 카운트 했는데 이러면 중복되는 숫자가 포함이 안되서 한참 고민하다 결국 못 풀었고 블로그에서 답을 찾았습니다.
ㅁ

  • 풀이 내용도 진짜 다양하게 있었는데 이분 설명이 가장 이해하기 쉬었습니다. 맨 마지막의 수가 9이면 n=2, 두자리 수에서 10개, 8이면 9개 7이면 8개... 이런식으로 반복된다고 합니다. dp문제들이 정수 N에 따른 경우의 수/ 계산에서 얻을 수 있는 뭔가 수학적 패턴이 확실히 많은 것 같네요.

10824 네 수
네 자연수 A, B, C, D가 주어진다. 이때, A와 B를 붙인 수와 C와 D를 붙인 수의 합을 구하는 프로그램을 작성하시오.
두 수 A와 B를 합치는 것은 A의 뒤에 B를 붙이는 것을 의미한다. 즉, 20과 30을 붙이면 2030이 된다.

  • 아니 이건 진짜 풀었다고 생각했는데 또 틀려서... 뭔가 틀렸을까요.. 이 문제를 풀면서 항상 이상한 강박관념? 이랄까 학교에서는 교수님이 함수를 사용하지 말고 직접 구현을 하라고 계속 하셔서 여태 문제를 풀면서 함수를 사용해야겠다는 생각자체를 못했습니다. 그래서 문제를 보니 그냥 정수형을 문자열로 바꾸면 되겠는데? 해서 int A; char string_A[100]; \n string_A = A; 뭐 이런식으로 접근했다가 그냥 시간만 다 날린...애초에 자료형에 대한 이해도 부족해서 자꾸 에러가 나는 이유를 한동안 알지 못했던...int 형과 char형이 애초에 크기가 다른데... 하...
    123
    머리 속에 있는 지식과 잘못된 생각이 만나 결국 나와버린 끔직한 혼종....지금 생각해보니 틀린 이유도 아마 문자열을 합쳐서 그걸 반대로 정수형으로 바꾼게 원인이 아닌가 생각합니다.
  • 내 풀이 : 문자열 A뒤에 B를 붙임 / C뒤에 D를 붙임 -> A.B를 정수형으로 바꾸는 함수 atoi()를 검색해서 사용 -> A + B
    웬만한 예시는 다 맞게 나오는데 아쉬운 문제였습니다..

1699 제곱수의 합
어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=3^2+1^2+1^2(3개 항)이다.
이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=2^2+2^2+1^2+1^2+1^2(5개 항)도 가능하다.
주어진 자연수 N을 이렇게 제곱수들의 합으로 표현할 때에 그 항의 최소개수를 구하는 프로그램을 작성하시오.
-> 크흐흑... 저번 숫자 더하기 문제의 복수를 위해 풀어보려고 했는데.... 패배해 버렸습니다...ㅠ

제곱 수로 표현해보면 높은 숫자의 경우 1^1이 너무 많이 쓰이거나 계산이 안됐었는데 정답을 보고나니 애초에 제가 생각을 잘 못 했던 것 같습니다. 첫번째로, 예를들어 42란 숫자가 있으면 6^6(36) + 2^2(4) + 1^1 + 1^1 이런식으로 그냥 무작정 계산식으로만 생각했습니다. 두번째로는 머리속으로 계산은 가장 큰 수의 제곱수에다가 나머지 수를 더하는 것인데 무조건 큰 수가 최소개수가 되지는 않았습니다.
ㅁㄹ
블로그에서 정답을 보면서 문제의 핵심은 이번에도 최소개수를 구해야 하기에 42에 포함 될 수 있는 제곱의 수 ( 1^1, 2^2, 3^,3, 4^4, 5^5, 6^6) 에서 뺀 나머지 수 의 경우의 수를 더해야 한다는 것을 알게 되었습니다. 말이 이상한데
*내가 생각한 것 : 큰 제곱수에서 나머지 작은 제곱수를 *더하는 경우의 수 // 정답 : 해당 숫자에 포함되는 제곱수를 뺀 나머지 숫자의 경우의 수 + 1 여기서. +1이 처음에는 왜 있는지 몰랐는데 각 제곱수로 뺀 거 자체로 하나의 경우의 수이기 때문이라는 것을 뒤늦게 이해해서 완전히 이해할 수 있었습니다..

2193 이친수
이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다.
이친수는 0으로 시작하지 않는다.
이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다.
N(1 ≤ N ≤ 90)이 주어졌을 때, N자리 이친수의 개수를 구하는 프로그램을 작성하시오.

  • 이 문제도 처음에 비트수에 따라서 1도 01이나 001로 표현되는게 아닌가 혼동이 와서 계속 헷갈려서 헤맸습니다...ㅍ..ㅍ
    위 조건에 맞으려면 앞자리 수는 무조건 1이여야 하고 그 다음에 0이니까 10_ _ _n 자리 수로 시작해야 하더라구요.
    위 문제들 처럼 하나하나 경우의 수를 해보니까 같은 숫자가 반복되는게 곧 dp[n] = dp[n-1] + dp[n-2] 이라고 확실했고 지난 주 풀었던 문제에서 d[0],d[1]을 따로 선언 해줬던 게 생각나서 코드를 완성시켰는데 !! .. 틀렸습니다.... 아무리 생각해도 이유를 몰라서 결국 또 찾아보니 기초적인 부분이더라구요.. 조건에 N(1 ≤ N ≤ 90)이 주어졌을 때, 라는 게 걸렸던 것...아니 이걸 신경써야 된다고 하면서 화내다가 진짜 90해보니까 오버플로가 뜨고 나서 아차 했습니다. 근데 이걸 해결하기 위해서 가장 큰 자료형 long long (8바이트)를 썼는데도 Run time error : stak: ~ 에러가 뜨길래 한참 고민하다... N 최대 90까지 -> 배열선언 N[90] 맞잖아...어..? 뭐지 ..뭔가... 아악.....인덱스N(0) ~ N(89) -> N[90]번째가 없음 ... 이건 이런 기초적인 개념도 아직 완벽히 이해하지 못했다는 증거라고 생각합니다.... 이번 기회에 더 확실하게 공부하는 계기가 되었습니다..

이번엔 진짜 완벽하게 내 힘으로 풀어봐야 다짐했건만...아직 한참 부족하고도 남을 실력이라 부끄럽습니다...그래도 이번기회에 확실히 알게 되었던 한 주였습니다. 이번 주차가 마지막이네요. 코딩 공부 계속 해야지 해야지 했었는데 갑자기 시작했지만 방학 한달 동안 덕분에 진짜 알차게 보냈고 유익했던 것 같아요. 강민이 덕분에 깃허브 사용법도 알고 새로 배운 내용도 진짜 많은 것 같아요. 같이 공부하면서 너무너무 고생많았고 2학기도 파이팅 합시다!~

마지막 스터디인가요 정말 고생많았고 덕분에 방학동안 유익한 공부 할 수있었던 것 같슴다 !! 고마워용
@Oing2152 Oing2152 requested a review from mututu17 August 30, 2024 13:27
@Oing2152 Oing2152 self-assigned this Aug 30, 2024
@mututu17
Copy link
Owner

토익은 잘 보고 오셨나용? 4문제나 풀다니 진짜 열심히 해주셨네요 벌써 마지막 주라니 이게 진짜 일리 없어..ㅠㅠㅠㅠ

  1. 10007로 나누라고 하는 문제는 숫자가 엄청 커지니까 줄일려고 10007로 나누는 경우가 많던데 int형으로 되는 거 같아서 의외네요 수학적으로 뭔가 깔끔해서 좋은 문제인 거 같아요!
  2. 제가 추천해줬던 문제인 거 같은데 간단해 보이는데 함정이 개많아서 계속 틀렸던 기억이 나네요.. 저도 영문이 코드 보고 맞는거 같은데? 뭐가 틀렸지 하고 또 블로그를 찾아봤는데 대박
    long long 형으로 합을 선언하고 stoll()을 써야한다고 하네요 저도 이렇게 풀었던 기억이.. 이런 문제에 익숙해지면서 코딩 실력이 크는 게 아닐까 싶어요 ㅋㅋ
  3. 문제가 꽤 어려워 보이는데 고민해본 흔적이 많이 보이네요 스스로 풀어볼려고 하는 습관 죠습니다!
    DP 조건식 만드는게 확실히 어려워 보이네요 저는 다시 풀려고 하면 풀 자신이 없는... '이런 식으로 문제를 푸는 유형이다' 이렇게 익히고 잘 정리해서 나중에 보고 공부해보는 거 좋아보이네여
  4. 이 문제도 고생했어요! 저도 배열 선언할 때 틀려보고 배열 만들 때 이유없이 1씩 크게 만드는 습관이 생겼습니다..
    좋은건지? 나쁜건지? 계산하기 귀찮으면 메모리 차이도 크게 안나니까 넉넉하게 만드는 것도 좋은거 같아요(?)

벌써 마지막이라니.. 그래도 같이 문제 풀어서 저도 도움이 많이 됐어요! 매 번 풀리퀘도 잘 올려주고 코멘트도 잘 달아줘서
진짜 고마워요 ㅠㅠㅠㅠㅠ 2학기 수업들을 때 도움이 됐으면 좋겠습니다! 2학기 힘내고! 겨울 방학도 다시 하던지 얘기해봅시다!
(이번 주 문제는 한참 전에 풀어놨는데.. 어려운거 하나에 막혀서 계속 못올리고 있어요.. 내일 시간되면 풀어놓은 거라도 일단 올리겠습니다. 부산에 가야 돼서 바쁘기도 하고 코딩은 잠깐 내려놔버렸네요 학기 시작하면 저는 본격적으로 달리겠습니다..! 파이팅!!)

@Oing2152
Copy link
Collaborator Author

항상 상세한 피드백 너무 고마워요 ㅠㅠ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants