백준 4673_셀프넘버.cpp

hello_hidi·2021년 6월 20일
0

baekjoon_C++

목록 보기
6/33
post-thumbnail


  1. 첫번째로 생각했던 방법은 selfnumber가 아닌 것들의 백터를 만들고 그 나머지 것들을 거르는 식으로 코딩을 했다.

<실수>
*십의 자리까지만 생각을 했기 때문에 백의 자리 이상부터의 나머지는 더하지 않는 알고리즘이 나왔다.

  • 그 다음에 거르는 코드는 두가지 정도를 만들었는데
    1. [i+1] != [i] + 1 => [i]+1 을 출력
    1. if(NonSelf[i+1]-NonSelf[i] >1){
      for(int j = NonSelf[i]+1; j < NonSelf[i+1]; j++){
      cout << j << endl;
      => 이 두가지 코드의 문제점은 둘 다 사이값으로 계산하기 때문에 마지막 인덱스에서 값을 넘어버린다

실패

  1. 두번째로 생각했던 내용은 구글링을 통해서 숫자를 한 가지씩 비교해서 bool list에 selfNumber인지 아닌지를 인덱스로 표시하는 방법이었다.

    <실수>
    *max라는 변수를 통해서 가장 큰 값이 나온 이후 부터는 더 이상 셀프넘버를 만들 수 없게 만들었는데 가장 큰 문제는 그 뒤에 만드는 셀프넘버 값이 이전에 나온 max보다 작을 수 있다는 것을 간과했다.

실패

  1. 마지막으로 만든 selfnum를 비교하는 대신 지정된 숫자보다 작으면 포함하지 않는 방법을 선택했다.(이것 역시 구글링...)

<느낀점>
1. 국방오픈소스아카데미에서 진행하는 온라인 해커톤을 위해서 알고리즘을 공부를 다시 시작하게 되었다. 오랜만엔 언어를 손에 익히는 과정에서 문법도 많이 틀리고 알고리즘도 원래 뛰어난 실력이 아니었기 때문에 한문제를 푸는데 하루를 다 사용해버렸다. 조금은 느려도 천천히 꾸준히 매일매일 알고리즘 문제를 풀어가면서 계속 실력을 향상시켜야겠다.

  1. 나의 가장 큰 문제점은 대충 읽고 넘어가고 배끼는 것이다. 그것을 확실히 보안하기 위해서 velog에 알고리즘 문제를 정리해서 올리기로 다짐했다. 귀찮더라도 내가 어떤 부분에서 실패를 했는지 확인할 수 있어서 좋았다.

  2. 의문인 점이 하나있다. boolList를 전역변수에 두었을 때와 main에 두었을 때의 값이 다르게 나오는 데 이 점의 고민을 해결하지 못한 점이 아쉽다. 앞으로 공부하면서 꼭 다시 이 문제를 확인해서 그 이유를 알아내야겠다.

  3. 이 글을 쓰는 순간에 국방오픈소스아카데미 해커톤 일정이 나왔다. 솔직히 군대에서 코딩 공부를 어떻게 해야 될까 갈피가 잡히지 않았는데 첨으로 이 소식을 접했을 때 심장이 뜨거워지고 새로운 목표에 다시 도전해야겠다고 느꼈다. 열심히 공부해야겠다!!!!

profile
안뇽희디

0개의 댓글