오늘은 알고리즘에 대한 유튜브 영상들을 먼저 시청했는데
생각보다 그리디 알고리즘은 별거 아니었다.
알고리즘 강의에도 그리디에 대한 언급은 없었고
그리디 태그를 단 문제도 몇개 풀어보지 않았기 때문에
그리디에 대한 막연한 부채의식이 있었는데
동전을 가지고 금액을 판별하는 느낌의 문제들을 그리디라고 부르는 것 같았다.

특정한 주제가 있다기 보다는 순차적인 필터링 조건들을 생각해내서
범위를 좁혀나가며 해결한다고 봐야할까?

구현에 대한 부분은 당연한 말이 많아서 큰 도움은 되지 않았다.

알고리즘의 학습은 그리디->완전탐색->BFS->DFS-> 그래프 -> 문자열 순서로 하는 편이 좋다고 하는 것 같은데
그리디에 대해 고려를 해본 것은 이번이 거의 처음인 느낌이고
(그 전에도 보기는 했지만 탐욕적이라 다 고려한다는 등의 설명이 거의 끝이었다.)
완전탐색(아마 브루트포스??)도 제대로 붙잡고 푼 기억은 없으며
BFS/DFS에 대해서도 살짝 가물가물하고 그래프는 거의 최약체인 상황이다.

다행히 문자열은 편하게 다룰 수 있지만(프로그래머스 문제 반 이상이 문자열 다루기였다)
알고리즘 학습의 기초단계는 건너뛰고 마구잡이로 푼 느낌도 들었다.

프로그래머스 0,1단계를 다 풀고 2단계도 70%가까이 푼 상황이라 기초가 없다고 하기는 애매한데 그래프 자체가 2단계부터 등장하기 때문에 2단계를 다 푸는 정도의 수준이 되야 알고리즘으로 코딩테스트 통과가 문제없다는 느낌인 것 같기도 하다.

프로젝트에 대한 교류를 하며 평가하는 내용들이 많이 있었는데
마음에 걸리는 부분은 유통기한 색 변경과
netlify 배포환경에서 새로고침시 터져버리는 것
그리고 멘토님이 말씀해주신 isLogin state를 제거하는 리팩토링 
세가지라고 볼 수 있다.

netlify 새로고침의 문제는 새로고침 시 리액트는 /로 라우팅을 넣어버려 제대로 된 url을 받을 수 없는 문제라고 한다.
퍼블릭 폴더에 _redirects 파일을 생성한 다음 /* /index.html 200을 추가해주면 index.html을 기본으로 시작하겠다는 의미이기 때문에 해결된다고 하는데
내일은 중간 1시간의 줌을 제외하면 수정할 내용들이 별로 없기 때문에
방법에 대한 것만 알아둔 다음 내일 수정할 예정이다.
(공식 페이지는 준호님만 배포할 수 있는 문제도 있다.)

스터디 동기분 중 한분이 고통을 호소하시면서 에러 수정이 안된다고 하셔서
가벼운 마음으로 개발자도구의 에러를 잘 못보시거나 네트워크탭을 확인하지 못하시거나
아니면 어플리캐이션쪽의 로컬스토리지 확인에 대해 모르실 수 있다는 생각을 가지고
같이 문제를 해결해보자고 제안을 드렸지만

세상에.. 여기는 TypeScript와 Next.js를 사용하고 있는 팀이었다.
백엔드의 문제인건지 오류코드는 원인을 제대로 알려주기보다는 원인이 터진 위치근방을 한국어로 알려줄 뿐이었고 어쩔 땐 되다 어쩔 땐 안되고 403 404 500 에러코드도 다양했다.
재미있는 것은 어떨 땐 또 되서 처음 내가 가입하고 진행할 때는 잠깐 괜찮게 진행됐다.

같이 에러코드도 검색해보고 네트워크도 확인하고(다행히 네트워크는 모르셨어서 조금이나마 도움이 됐다.) 로컬스토리지도 확인했지만 로컬스토리지의 데이터 처분이 이상한 부분이 있고 로컬스토리지가 남아있어도 새로고침시 로그인이 안되는 문제도 있으셨지만 그것이랑 관계없는 특정 페이지가 들어가지다 안들어가지다 서버 기분따라 작동하는 느낌인데 이 문제는 해결할 수 없었다.

정말 기능도 많고 실제 운영되는 사이트같은 느낌으로 복잡한 구조였지만
백엔드분들의 협조가 부족했는지 이런저런 문제가 많았다.

화요일 새벽에 이렇게 스트레스받으며 마무리를 하려고 하시는 모습을 보니 조금 안타깝기도 하고 이런 팀들처럼 조금 더 욕심을 내서 한두가지 기능정도는 더 넣어봤어도 되지 않나 반성하기도 하는 시간이었다.

토,일요일의 부채(잠) 때문에 오늘도 오후 5시에 일어나버려서 사실상 많은 시간이 있지는 않았는데 이런저런 방향성을 점검하고 스터디원과 함께 고민을 해결해보려는 시간을 가진 것은 괜찮은 하루였던 것 같다.




CT(1).백준 10569 다면체는 꼭짓점-모서리+면의수 = 2라는 공식을 이용해
꼭짓점, 모서리만 제공받은 상태에서 면의 숫자를 구하는 문제였다.
간단하게 오른쪽으로 이항?시켜 면의수 = 모서리-꼭짓점+2이므로 해당 값을 구해줬다.

let input = `2
8 12
4 6`.split('\n').slice(1)

let result = []

for(let i = 0 ; i < input.length ; i++){
    let [a,b] = input[i].split(' ').map(Number)
    result.push(2+b-a)
}

console.log(result.join('\n'))

'회고' 카테고리의 다른 글

[Main-Project 개발일지]-35(종료)  (0) 2022.10.12
[Main-Project 개발일지]-34  (0) 2022.10.11
[Main-Project 개발일지]-32(주말)  (2) 2022.10.09
[Main-Project 개발일지]-31(주말)  (0) 2022.10.08
[Main-Project 개발일지]-30  (2) 2022.10.07

+ Recent posts