SPURT 프로젝트 개선

아직 백엔드 작업은 거의 없지만 디자인&FE 파트를 도와가면서 주 1회 진행중이다.

발견한 버그가 있으면 기록했다가 해결하려고 하고있고, oauth를 백엔드에서 처리하는 작업을 11월부터 진행할 예정이다.

서버는 유지하되 당분간은 AWS를 사용하기로 한 상태고, NCP 추가 크레딧은 추후 신청할 예정이다.

 

Effective Java 스터디

10월 내에는 마무리하지 못했지만 현재 2주 분량이 남은 상태로 11월 내에는 마무리될 것으로 보인다.

스터디가 마무리되면 처음부터 복습을 해야할 것 같다.

 

RealMySQL 2권 스터디

8월에 1권 스터디가 종료되었고, 휴식기를 거친 후 2권 스터디를 시작했다.

멤버는 그대로이며, 진행방식도 그대로다.

1권 내용은 조금은 먼 미래에 사용할 것들이라면 2권은 당장 사용할 것들이라고 해도 무방할 것이다.

그래도 어디서 많이 봤거나 사용해본 것들도 있기 때문에 진도는 좀더 빠르게 나갈 것으로 보인다.

물론 아직 3회밖에 안했다. ^^

 

1일 1알고리즘

 

마무리

우테코 프리코스를 하고있는데 fork 수가 자바만 2.8K.. 이거 맞나?

자바 + 스프링을 쓰다가 자바만 쓰게되니 뭔가 느낌이 다르다.

평소에 내가 어떤 스타일로 코드를 짜왔는지 파악이 가능했고, 점점 개선해나가는 중이다.

이번주가 마지막 주차고, 밀린 자소서도 있고 스터디 준비도 해야되는데 바쁘게 살아야지 ^^

'잡담' 카테고리의 다른 글

12월 회고  (6) 2024.01.09
11월 회고  (2) 2023.12.12
Nexters 23기 CTO 회고  (11) 2023.10.20
9월 회고  (4) 2023.10.09
2000  (4) 2023.09.13

Nexters 22기에 이어 23기 활동을 마무리했다.

23기 운영진 (CTO)으로 활동했으며, 프로젝트와 병행으로 참여했다.

 

나는 넥스터즈로 첫 동아리 활동을 시작했고, 첫 운영진 활동까지 마무리했다.

운영진은 회장이 먼저 투표로 선출되고, 다른 운영진을 회장이 뽑는 방식으로 결정된다.

나는 운영진 활동으로 더 다양한 일을 경험해볼 수 있겠다는 생각이 들었고,

마침 같은 팀원이었던 분이 회장이 되는 것이 사실상 확정인 분위기가 되어서 고민끝에 직접 연락을 드려서 CTO로 합류하게 되었다.

22기 최종발표 전날, 게더타운으로 같이 작업하던 도중 뜬금없이 "운영진 되려면 형한테 물어보면 돼?" 라고 물어봤었던 기억이 있다.

다행히도 흔쾌히 받아주셔서 23기 CTO로 합류할 수 있었다.

 

인수인계

CTO로서 처음 해야할 일은 당연히 인수인계다.

전임자가 했던 일, 앞으로 내가 해야할 일을 듣고 업무에 익숙해져야 한다.

하지만 인수인계 당시에는 처음부터 어떻게 접근해야할지 감이 오지않았고, 내가 이걸 잘할 수 있을지 걱정되었다.

일단은 계정 로그인부터 시작해서 서버 테스트까지 진행했다.

https://teamnexters.com/

 

NEXTERS : IT Community for Experts

 

teamnexters.com

서버는 넥스터즈 공식 홈페이지 유지보수를 다룬다.

로컬에 실행시키는 과정부터 많은 시간을 소비했다.

vue와 python으로 구성된 프로젝트였는데 둘다 이해하는데 많은 시간이 걸렸고,

서버에서 명령어를 입력하는 부분에서 에러가 많이 발생했어서 해결하는데 많은 시간을 썼다.

다행인건 그래도 신입 모집 공개전까지는 완료되었다.

 

그리고 후원사인 네이버 클라우드와의 미팅을 진행했다.

처음에 나만 톡방에 던져져서 당황했다.

여긴 어디지? 이분들은 누구지? 나는 뭘 해야하는거지? 그냥 있으면 되는건가? 정말 많은 생각을 했다.

실제로 톡방에 던져지고 11일 동안 아무런 얘기도 없었고,

내가 먼저 미팅을 잡아서 간단하게 인사도 드릴겸 22기는 어떻게 진행됐었는지, 23기는 어떻게 진행될건지 여쭤보기로 결정하여 연락드렸다.

담당자분께서 정말 친절하게 미팅 주도해주시고, 질문도 잘 받아주셔서 지원해주시는 내용을 완벽하게 이해할 수 있었다.

 

리크루팅

기존 활동회원부터 신입 회원까지 선발하는 과정이다.

기존 회원 모집을 1주일정도 진행했고, 이후 신입 회원을 모집한다.

신입 모집 공개 전까지 공식 홈페이지에 표시될 화면을 모두 수정해야 한다.

공개날에 바로 바껴야하기 때문에 전날 새벽에 업데이트를 완료했다.

 

신입 모집 기간에 생각보다 많은 양의 서류를 받았다. 역시나 마지막날에 거의 절반정도의 서류가 도착을 하더라.

이번 기수는 임팩트 캠퍼스에서 비수도권 인재분들에 대한 교통비 전액 지원을 해주셔서 더 많은 기대가 되었다.

지방에 계신 분들은 넥스터즈에 대해 모르실 수 있으니 지인을 통해 홍보를 부탁했고, 결과적으로 많은 비수도권 인재분들의 지원을 받을 수 있었다.

 

서류를 받았으니 개발자 / 디자이너로 나눠서 서류 검토를 시작한다.

정말 많은 분들이 서류지원을 해주셨고, 최대한 꼼꼼하게 검토하기 위해 10일이라는 시간을 사용했다.

1차적으로 자소서가 너무 부실하거나 깃허브, 포폴 등 다른 내용이 부실한 경우는 과감하게 탈락 처리를 드렸다.

그럼에도 2, 3차 검토에서 확인해야할 서류 갯수가 많이 남았었다.

 

다른 운영진과의 관점의 차이일 수도 있다.

다른 개발자 운영진들은 자소서에 더 많은 비중을 두고 과감하게 날린 부분도 많았지만 나는 활동 내용에 비중을 두었다.

많은 분들이 다른 활동 경험이 많이 있었고, 프로젝트 진행에 문제가 없다고 판단해서 2, 3차로 넘긴 경우가 많았다.

이런 경우는 운영진끼리 기준을 일치시키고 접근했다면 어땠을까 하는 아쉬움이 남는다.

결과적으로는 총 봐야할 서류 양이 많아져서 밤새면서 검토하기까지 했다.

 

서류 검토가 완료되면 면접을 준비한다.

5명의 운영진이 모든걸 담당하기엔 부족함이 있기 때문에 면접관과 도우미를 섭외해야 한다.

우리 운영진들은 인성면접을 맡기로 하고, 기술면접관과 도우미를 미리 섭외했다.

통과된 서류를 기술 면접관분들께 전달하고, 면접 전날까지 면접 질문을 정리한다.

 

인당 15분 정도의 면접시간 내에 인성 + 기술 질문은 모두 수행해야하기 때문에 준비한 질문을 빠르게 처리해야 한다.

생각보다 인성질문은 공통된 질문이 많아서 개별질문은 별로 하지 못했다.

이 짧은 시간의 면접에서 합격자를 가려내기란 너무 어려웠다.

녹화본을 몇 번 돌려봤는지 모를 정도로 많이 봤고, 어렵게 최종 합격자를 선발했다.

 

세션 준비

세션 전까지 해야할 일로는 크게 아이디어 발제 및 확정, 1주차 세션 준비다.

아이디어 발제는 넥스터즈 프로젝트인 "모임모임"을 활용한다.

활동하는 회원분들 신규 가입을 독려하고, 아이디어를 등록할 수 있도록 권한을 부여한다.

생각보다 많은 분들이 아이디어를 내주셔서 다행이었고 투표를 통해 10개의 아이디어를 선정할 수 있었다.

 

아이디어 선정을 하면서 정규세션에 활동할 장소를 확인해야 한다.

이번 기수는 SBA에서 정규세션 내내 활동할 장소를 대관해주셔서 매주 대관 걱정은 없어졌다.

대관 장소 답사를 해서 PC, 빔 프로젝트, 와이파이 등 환경들을 하나하나 점검했고, 필요한 것들을 정리했다.

생각보다 대관 장소가 층 전체를 이용할 수 있기 때문에 많은 것들을 시도해볼 수 있겠다는 생각이 들었다.

아쉬운게 있다면 장소가 1년 이상 방치되었던 곳이라 HDMI 연결이나 몇몇 에어컨이 작동하지 않는 등의 문제가 있었다.

여름에 진행되었기 때문에 에어컨 문제는 생각보다 크게 체감되었고, 많은 회원들의 피드백을 받게 되었다.

하지만 시설문제를 우리가 해결할 수 있는 부분은 전달하는 것 밖에 없었다.

 

1주차 준비를 위해 많은 시간을 소비했던것 같다.

첫 세션 진행이라 그런지 공지할 내용, 후원사 소개, 굿즈 배부, 팀빌딩, PM 발표, 직군별 네트워킹, 세션장소 자리배치 등 고려해야할 부분이 너무 많았다.

이 많은것들을 처리하기 위해 운영진들끼리 오프라인으로 모여서 회의를 진행하기도 했다.

 

정규 세션

정규 세션은 매주 회의를 통해 진행방식을 결정한다.

회의로 세부일정 및 공지할 내용을 정하고 세션 전에 공지한 후에 세션이 진행된다.

지난 기수의 자료를 참고하고, 따라가겠지만 우리가 모든 것을 직접 계획해서 세션을 이끌어 나가야 한다.

 

내가 CTO로서 정규세션 기간에 했던 업무는 NCP 크레딧 지원, 컨퍼런스 강연자 모집 정도로 다른 운영진들에 비해 상대적으로 적었다.

그래서 운영지원이나 엑셀 등 다른일들을 맡아서 진행하기도 했다.

 

세션 시작 전부터 네이버 클라우드 담당자분과 미팅을 진행하여 제휴 내용을 파악하고, 크레딧 지원 현황을 관리하기 위한 폼을 만들었다.

담당자분을 직접 초대해서 네이버 클라우드 홍보도 할 수 있는 자리도 마련해드리고, 겸사겸사 직접 만나뵙기도 했다.

그리고 팀별 크레딧을 지원받기 시작했다.

일단 신청 해놓고 AWS를 사용한다던지 발급된 크레딧을 사용하지 않는 분들이 좀 계셔서 사용 실적이 높지 않다는 점은 보완해야할 부분이지만

거의 모든 팀에서 신청을 해주셨고, 생각보다 많은 회원분들이 관심을 가져주셨다는 부분은 긍정적이다.

나 또한 신청해서 크레딧을 지원받았고, 서버 운영비 부담없이 프로젝트를 진행할 수 있었다.

 

6주차에는 컨퍼런스 세션이 진행된다.

인수인계 당시 강조받았던 내용에서 미리 진행되어야 할 것들 중 하나가 컨퍼런스 세션 준비였다.

컨퍼런스 강연자들을 모집해야 하고, 강연자분들은 발표 준비를 해야한다.

늦어도 1주 전에는 모집이 완료되어야 하고, 나는 세션 시작 전부터 물색을 시작했다.

신입 회원들의 서류와 모든 회원들의  노션 자기소개를 읽어보고 좋은 인사이트를 주실 수 있을만한 분들을 찾아내기 시작했다.

 

강연자 모집에는 두 가지 방법이 있다.

공개적으로 모집을 해서 선발하는 방식과 개인적으로 연락을 해서 직접 선발하는 방식.

나는 개인적으로 연락을 드리는 방법을 선택했다.

이렇게 하니 선발하는데 어려움이 있었고, 많은 시간이 소요되었다.

 

이번 컨퍼런스는 오프라인으로 진행되었기 때문에 장소의 제약이 있었다.

세부직군으로 나눈다면 모두가 원하는 직군의 컨퍼런스를 들을 수 있다.

하지만 공간이 충분하지 않아서 개발자 / 디자이너로만 나누었고, 개발자는 공통 주제만 다루는 것으로 제한했다.

몇몇 분들은 집중하지 않거나 아예 다른 방에 가서 다른 일을 하시는 분도 계셨지만 흑..

그래도 나름 괜찮게 마무리된 것 같아서 다행이었다.

 

1주차 세션은 팀 빌딩이 이루어진다. 세션 시작 전에 선정된 PM이 발표를 진행하여 본인이 발제한 아이디어를 소개한다.

회원들은 발표를 듣고 희망하는 팀을 선택한다. 회원 중 한명이 팀빌딩 웹 서비스를 개발해주셨고, 생각보다 편하게 팀빌딩을 진행할 수 있었다.

 

나는 이번 기수에 운영진으로 활동하지만 회원으로서 프로젝트에도 참여했다.

팀은 내가 개발하고 싶었던 기능들이 있었고, 내가 사용할만한 프로젝트를 선택했다.

내가 운영진이기 때문인지, 내 의지를 좋게 봐주셨는지 모르겠지만 팀원으로 받아주셔서 감사했다.

 

이번 기수 프로젝트는 여유를 가지고 진행했던 것 같다.

나는 프로젝트를 할때마다 항상 새로운 경험을 하는 것을 목표로 했다.

이번에도 같은 백엔드 개발자분께 새로운 것들을 많이 배웠다는 생각이 들었다.

실제로 내가 지금까지 본적도 없는 파일 구조를 보여주셨고, 그대로 진행하기로 했다.

적응하는데 시간이 꽤 걸렸지만 유지보수나 가독성 부분에서 훨씬 좋다는 느낌을 확 받게 되었다.

 

물론 빌드 과정에서 auto restdocs 설정 부분의 에러가 나한테만 계속 발생하는 억까를 당하거나

기능이 추가되면서 기존의 설계가 좀 꼬이는 문제가 발생하긴 했지만 새로운 것을 시도해본것 만으로도 만족한다.

내가 구현하지 않은 부분들이나 다루지 않았던 네이버 클라우드 플랫폼은 추후에 내가 공부해야 할 부분이다.

아쉬웠던건 내가 로그인 구현에 관여하지않은것 정도가 될것 같다.

프론트에서 next.js로 로그인을 모두 구현해버렸기 때문에 내가 구현할 일은 없어졌다.

추가로 다른 문제가 생긴다면 구현을 해보겠지만 이때 하지못한건 분명 아쉬움이 있었다.

 

밤새서 작업하는 넥나잇 세션도 재미있었던것 같다.

작업이 밀려있기도 했고, 운영진으로서 준비를 해야했기 때문에 일찍와서 세션장소 내부 점검을 하고 작업을 했다.

저녁 6시부터 세션이 시작되지만 생각보다 다들 일찍오셔서 오랫동안 작업을 하시더라.

중간마다 있는 컨텐츠와 석식, 야식, 조식 모두 제공되어 회원분들의 만족도가 높았던 것 같다.

무엇보다 시간이 지날때마다 쓰려지는 분들이 많아서 그것또한 재미있는 포인트였다.

나는 그때 자주 밤을 새던 시기였어서 그렇게 힘들지는 않았던것 같다.

작업해야할 것들이 많아서 오히려 시간이 부족했지만 모여서 오랫동안 작업하니까 소통이 잘되면서 진행이 훨씬 잘되는 느낌이었다.

 

22기 때는 앱 개발을 했었고, 최종발표 전까지 출시를 하지 못했었다.

하지만 이번엔 웹 개발이었고, 미리 배포를 하고 개발을 진행할 수 있는 점이 좋았다.

개발은 발표전날까지 계속되었지만 원하는 목표까지는 개발하는데 성공했다.

아쉽게도 수상은 하지 못했지만 정말 재미있는 세션을 보냈다고 생각한다.

 

인수인계

처음에 내가 인수인계를 받았다면 이제 후임자에게 인수인계를 해야한다.

이전 기수들에서 이어져오던 인수인계 문서를 최신화하고, 내가 진행했던 내용들을 따로 모아두는 방식으로 진행했다.

 

인수인계 당일에는 23, 24기 CEO, CTO가 모여서 진행했다.

CTO는 인수인계를 위해, CEO는 모든 업무를 파악하기 위해, 그리고 내용 확인을 위해서다.

약 한시간 반 정도의 인수인계를 진행했고, 내가 알려줄 수 있는 모든 것을 자세하게 설명드렸다.

그럼에도 놓친 부분이 있으면 개인적으로 연락드려서 알려드리기도 했으며, 내가 정리했던 자료까지 공유했다.

 

이전 기수까지는 CTO 인수인계에 아쉬움이 있다는 느낌을 받았었다.

당장 내가 인수인계를 받을 당시에도 단 30분만 진행했었고, 나는 업무를 파악하는데 많은 시간이 걸렸었다.

내가 어떤 고생을 했었는지 스스로가 알기 때문에 다음 기수부터는 고생을 덜 하실 수 있도록 준비를 철저하게 했던것 같다.

물론 업무를 진행하면서 인수인계를 준비한건 아니긴 한데 ㅎㅎ 세션이 종료된 직후부터 자료들을 최신화시키고, 인수인계 준비를 했었다.

 

네이버 클라우드와의 제휴 내용에 대해서는 직접 미팅하는 것이 낫겠다고 판단했고, 같이 미팅에 참여했다.

23기 넥스터즈와의 제휴 내용과 변경되는 부분이 있는지, 크레딧 중복 지원 정책도 그대론지, 빠진 부분은 없는지 확인했다.

그렇게 나의 마지막 업무는 마무리되었다.

 

다음기수 업무가 종료될때 까지도 업무 관련된 연락은 계속 받을 예정이다. 아 이건 너무 당연한 얘긴가?

물론 후임자분도 책임감이 있으신 분이니 잘 하실거라고 믿는다. ^^

 

마무리

개인적으로는 정말 아쉬움이 많았던 기수였다.

22기가 종료되고, 운영진 업무를 시작할 때쯤 회사 일에 대한 스트레스를 많이 받았었다.

내가 원하는 일을 더이상 할 수 없겠다는 생각이 들었고, 약 3개월정도 퇴사를 고민하면서 번아웃이 크게 찾아왔었다.

그 때가 리쿠르팅 기간이었고, 서류를 검토하는데 집중하지 못해서 밤을 새기도 했다.

그래도 같이 일하는 운영진들과 프로젝트하는 팀원들이 있었어서 끝까지 버틸 수 있었던것 같다.

회사에서 우울했던 대신 운영진 활동하면서 정말 행복했다.

 

첫 운영진 활동이라 적응하는데 어려움이 있었다.

지원자의 서류를 보고 면접을 내가 직접 본다는 것은 상상도 할 수 없었다.

실제 면접을 볼 당시 긴장했었는데, 같이 들어갔었던 기술 면접 담당해주셨던 분이 잘 도와주셔서 금방 적응할 수 있었다.

아쉬웠던 점이 있다면 면접 당일 갔었던 스터디룸의 환경이 별로 안좋았는지 마이크 음질이 너무 안좋았고, 네트워크 문제로 면접이 지연되기도 했다.

다음 이런 기회가 생긴다면 더욱 꼼꼼하게 진행해야겠다는 생각이 들었다.

 

세션 진행 관련해서는 내가 기여한 부분이 많지 않았다.

위에서 언급한것처럼 나는 NCP 크레딧과 컨퍼런스 정도가 주 업무였고, 나머지는 다른 운영진을 도와주는 정도였다.

그래도 회의하기 전에 세션 진행에 필요한 것들, 우리가 확인해야할 것들에 대해 미리 정리하였고, 부족한 부분은 없는지 다시 확인했다.

덕분인지 회의때 그렇게 헤매거나 했던 적은 없었던것 같다. 물론 다른 운영진들 덕분이지만~

 

"몇 번을 잘해도 한 번 못하면 폐급이다" 라는 말을 어렸을 때부터 정말 많이 들어왔었고,

나 또한 그렇게 생각을 하고 있기 때문에 기수를 활동하는 회원들에게 부족함을 보여주고 싶지 않았다.

회의가 일찍 끝나더라도 놓친 부분은 없었는지 다시 확인해야 했고, 진행하는데 실수를 최대한 줄이려고 했다.

물론 그렇게 하지는 못했고, 심적으로도 부담이 많았지만 시간이 지나고 같이 일을 하면서 어느정도 괜찮아진 것 같다.

첫 동아리 치고는 잘 마무리한것 같아서 세션 종료 후에는 뿌듯했던것 같다.

 

장소, 식대, 간식 등 지원해주는 것들이 많아서인지, 진행이 깔끔해서인지, 피드백을 적극적으로 받아들여서인지 모르겠지만

결과적으로 넥스터즈 23기는 회원들의 좋은 반응을 얻었고, 만점에 가까운 만족도를 기록하면서 잘 마무리되어 다행이라고 생각한다.

 

프로젝트 결과는 나름 만족한것 같다.

우선 웹 프로젝트라 배포가 금방된다는 것은 분명 좋은 부분이다.

이번에도 새로운 기능들을 사용해봤고, resolver나 mapper, jpa같은 개념들은 다시 보는것도 중요하다는 생각이 들었다.

새로운 파일 구조를 배웠다는 점이 제일 큰 것 같다. 와 이렇게도 나눌 수 있구나 라는 생각이 팍 들게 되었다.

이제 잘 흡수해서 내것으로 만드는 일만 남은것 같다.

빌드 과정에서 발생한 에러는 지금 생각해도 뭔지 모르겠다. pc 초기화를 시켜야되나..? 왜 나만 않되?

 

이번 팀원들이 정말 좋았던 점은 다들 술을 안먹는다는 것이다.

1주차 뒷풀이부터 2차로 카페에 갔으면 말 다한거다.

나도 술을 좋아하지 않기 때문에 정말 완벽한 팀이 아닐수가 없다.

전체 회식은 불참하고 파티룸 잡아서 놀기도 하고, 방탈출카페, 보드게임 등 우리끼리 놀러다녔다.

작업할 때는 정말 열심히들 한다는 생각이 들었다. 다들 새벽 늦게까지 잘 생각을 안한다. (한 분 제외)

백엔드에는 베테랑이 한분 계시고, 프론트에도 베테랑분들이 계시고, 디자이너 분들은 24시간 회의를 하는것처럼 디코만 들어가면 회의를 이미 하고 계신다.

디자인은 정말 몇 번을 봐도 미쳤다는 생각밖에 들지 않는다. 어떻게 저렇게 할 수 있는거지? 생각이 매번 들었다.

이번 기수는 비수도권 인재분들에 대해서 교통비를 전액 지원해드렸다.

팀원 중 한분이 대상이신데, 교통비를 지원받는다고 해도 이동 시간이 너무 많이 걸려서 많은 고민을 했을텐데 모든 세션에 출석을 해주셔서 리스펙한다.

팀원 모두가 갓생사시는 분들이라 나도 이번 활동하면서 자극을 많이 받아가는것 같다.

 

다음 기수 활동은 아직 고민을 하고있지만 하는 쪽으로 생각중이며, 24기 활동은 즐기면서 할 수 있었으면 좋겠다.

 

Nexters 23기 운영진들

SPURT 개발한 게꽁지 팀

다른 Nexters 23기 회원분들

모두 고생많으셨고, 24기 운영진분들 화이팅~

'잡담' 카테고리의 다른 글

11월 회고  (2) 2023.12.12
10월 회고  (2) 2023.11.11
9월 회고  (4) 2023.10.09
2000  (4) 2023.09.13
8월 회고  (2) 2023.09.05

넥스터즈 운영진 인수인계

8월에 넥스터즈 23기가 종료되었고, 24기 CTO에게 인수인계를 진행했다.

내가 인수인계를 받을 당시 부족했던점을 떠올려서 하나라도 전달 못하는 일이 없도록 CTO가 해야 할 업무들, 내가 했던 일들을 분리해서 작성했다.

인수인계를 하지 못한 부분에 대해서는 따로 알려드리면서 놓치는 부분이 없도록 하고 있다.

당분간은 후임자분께서 업무 적응 기간에 질문이 들어올 수 있으니 최대한 대처하려고 한다.

인수인계를 마치니 정말 끝났다는 것이 실감이 났고, 회고 쓰는게 왜이렇게 오래걸리지.. 쓸게 너무 많다.

 

SPURT 프로젝트 개선

넥스터즈 기수가 종료되었지만 파트 1명씩 남아서 개선 및 추가개발을 진행하기로 했다.

주 1회 만나서 작업 진행 중이지만 대부분 수정사항이 디자인&FE 파트라서 나는 의견을 같이 나누는 정도로 하고있다.

서버는 NCP를 사용중이라 크레딧 확인해서 추가 크레딧 지원받을 예정이다.

 

Effective Java 스터디

기수가 종료되어 각자 취준, 이직 준비에 따라 스터디 일정이 뒤로 밀리는 경우가 종종 있었다.

하지만 10월 내로는 마무리될 예정이고, 끝나면 다시 처음부터 복습할 예정이다.

 

1일 1알고리즘

 

마무리

왜 벌써 10월..?

명절이라 오랜만에 본가에 다녀왔다.

가족들이랑 시간을 보내느라 친구를 만나지는 못했지만 충분히 쉬었다는 생각이 들었다.

요즘 채용공고도 많이 올라오고 있고, 집에서 푹 쉬었으니 자소서 열심히 쓰자 ^^

'잡담' 카테고리의 다른 글

10월 회고  (2) 2023.11.11
Nexters 23기 CTO 회고  (11) 2023.10.20
2000  (4) 2023.09.13
8월 회고  (2) 2023.09.05
7월 회고  (0) 2023.08.04

아 땜빵 불편한데

 

아무튼 첫 1문제를 푼지 4년, 1일 1알고리즘을 시작한지 2년 넘는 시간이 지났고, 어느새 2000문제를 달성했다.

많이 푼다고 좋은건 아니지만 꾸준하게 하려다보니 이렇게 된것 같다.

 

아 400문제부터 100단위로 캡쳐본 남겨놨었는데 pc 초기화 후 복구문제로 중간에 날라간거 너무 아쉽네..

 

글을 어떻게 끝내지?

'잡담' 카테고리의 다른 글

Nexters 23기 CTO 회고  (11) 2023.10.20
9월 회고  (4) 2023.10.09
8월 회고  (2) 2023.09.05
7월 회고  (0) 2023.08.04
6월 회고  (2) 2023.07.02

넥스터즈 6 ~ 8주차

세션 시작 전부터 6주차 컨퍼런스 진행을 위한 강연자분들을 물색했다.

결과적으로 좋은 반응을 얻어서 다행이라고 생각한다.

자세한 모집 과정은 23기 회고 글에 작성할 예정이다.

 

이번 세션기간 동안 밤낮이 바뀐 상태로 참여했기 때문에 밤새고 세션활동을 한 적이 많이 있었다.

덕분인지 이번 넥나잇은 별로 피곤하지 않은 상태에서 지냈던것 같고, 팀원들과 많은 시간을 함께 했기 때문에 진행이 어느정도 되었다고 생각한다.

하지만 아직 해야할게 많이 남긴 했더라..

 

최종발표 당일까지도 개발을 진행했던것 같다.

우리가 볼륨을 적게 가져가긴 했지만 너무 여유롭게 진행한건 아닌지 돌아보게 되었다.

아쉽지만 무사히 마무리했고, 이번에도 좋은 팀원들을 만났다는 것에 만족한다.

 

RealMySQL 스터디

RealMySQL 1권 스터디가 종료되었다.

1권 내용은 생각보다 딥해서 당황스러웠지만 스터디원분들 모두 나보다는 잘하시는 분들이라 따라가기 바빴던것 같다.

9월 내로 2권 스터디를 진행할 예정이다.

 

Effective Java 스터디

넥스터즈 기수가 종료되었지만 내부 스터디를 꾸준히 진행중이다.

생각보다 자바에서 내가 모르는 내용이 많았고, 도움이 많이 되고있다고 생각한다.

앞으로도 책을 완전히 끝내는 것을 목표로 진행할 예정이다.

 

1일 1알고리즘

 

마무리

1월 ~ 3월 넥스터즈 22기

3월 ~ 8월 넥스터즈 23기

사실상 8개월간 동아리 활동을 한 느낌이다.

첫 동아리가 넥스터즈였고, 운영진까지 무사히 마무리해서 다행이다.

이제 하반기 시즌인데 취준 화이팅~

'잡담' 카테고리의 다른 글

9월 회고  (4) 2023.10.09
2000  (4) 2023.09.13
7월 회고  (0) 2023.08.04
6월 회고  (2) 2023.07.02
5월 회고  (4) 2023.06.01

https://www.acmicpc.net/problem/28018

 

28018번: 시간이 겹칠까?

댓글을 달아준 학생 수 $N$이 주어진다. $(1\leq N\leq 100\,000)$ 다음 $N$개 줄에는 각 학생의 좌석 배정 시각 $S$와 종료 시각 $E$가 주어진다. $(1\leq S\leq E\leq 1\,000\,000)$ 다음 줄에는 특정한 시각의 개수

www.acmicpc.net

특정 시간에 학생이 몇명 채워져 있는지 구하는 문제입니다.

이 문제는 학생들이 머무르는 구간 l ~ r이 주어집니다.

l ~ r 구간을 모두 채워주어야 하며, 매 쿼리의 l ~ r 구간의 누적을 구하면 O(N^2)의 시간이 걸려 TLE가 발생합니다.

매 쿼리마다 누적합을 갱신하지 않고, 시작과 끝에만 표시하여 한꺼번에 누적합을 구할 수 있는 imos 기법을 활용합니다.

 

학생은 l 시간에 들어와서 r 시간까지 머무릅니다.

따라서 학생이 존재하기 시작하는 l 시간에 +1, 학생이 없는 시간인 r + 1 시간에 -1을 누적합니다.

마지막에 누적합을 갱신하면 O(N) 시간 만으로도 문제를 해결할 수 있습니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#define MAX 1000001
using namespace std;
 
int dp[MAX];
int N, M;
 
void func() {
    for (int i = 1; i < MAX; i++) {
        dp[i] += dp[i - 1];
    }
 
    int x;
    cin >> M;
    while (M--) {
        cin >> x;
        cout << dp[x] << '\n';
    }
}
 
void input() {
    int l, r;
    cin >> N;
    for (int i = 1; i <= N; i++) {
        cin >> l >> r;
        dp[l]++;
        dp[r + 1]--;
    }
}
 
int main() {
    cin.tie(NULL); cout.tie(NULL);
    ios::sync_with_stdio(false);
 
    input();
    func();
 
    return 0;
}
cs

'algorithm > dp' 카테고리의 다른 글

boj 3114 사과와 바나나  (0) 2024.06.13
boj 11560 다항식 게임  (0) 2024.06.13
boj 12841 정보대 등산  (0) 2023.07.31
boj 25427 DKSH를 찾아라  (0) 2023.05.21
boj 25682 체스판 다시 칠하기 2  (0) 2023.02.26

넥스터즈 1 ~ 5주차

3월 중순 인수인계를 시작으로 약 3개월 간의 세션 준비를 마치고, 정규활동이 시작되었다.

CTO가 활동 기간에 할 일은 많지 않다.

현재 후원사인 네이버 클라우드의 크레딧 지원을 돕는 것, 컨퍼런스 강연자 초청 외에 큰 일은 없다.

 

정규활동 전까지 프로젝트 참여에 대한 고민을 했지만

이거 하면서 취준하면되지! 라는 생각으로, 이전 기수와 마찬가지로 새로운 기술을 사용해보는걸 목표로 참여하게 되었다.

23기 신입 면접 때 "이분과 같이 프로젝트 한다면 내가 많이 배울 수 있겠다" 싶은 분이 두 분 계셨는데 그중 한 분과 같은 팀이 되어 속으로 엄청 기뻐했다.

그것도 내가 1지망으로 원했던 팀으로 가게되어 더욱 기뻤던것 같다.

 

팀에 속해있지만 전체적인 세션 참여는 하지 않는 편이다.

운영진이라서 회원분들의 출석 관리 및 세션도중 발생하는 모든 상황을 대처하기 위해 뒤에 남아서 진행되는 세션을 참관했다고 하는게 맞을 것 같다.

그리고 팀 작업 시간에는 프로젝트에 참여하지 않는 운영진에게 일을 맡기고 나는 팀원들과 팀 작업을 한다.

 

지금까지는 성공적인 기수를 보내고 있다고 스스로 생각중이다.

8주라는 짧은 시간에 현실적으로 할 수 있는 것들이 무엇인지 고민했고, 적당한 크기의 프로젝트가 될 것 같아서 만족스럽다.

그리고 팀원들이 정말 열심히 한다.

하루종일 회의를 하거나 새벽까지 남아서 작업을 한다.

그만큼 프로젝트에 대한 열정이 있기에 좋은 결과물을 기대해 봐도 좋을것 같다는 생각이 든다.

5주차 세션까지 중간 발표가 있었고, 8월 중으로 최종 발표가 진행된다.

월 단위 회고 말고 23기 회고 글에 자세하게 작성할 예정이다.

 

취준 컴퍼니 7기

전 직장 상사의 추천으로 취준 컴퍼니의 존재를 알게 되어 지원하게 되었다.

활동은 매주 "로켓펀치를 이용한 지원서 제출 2회" 가 끝인데 집무실 무료 이용, 커피챗을 통한 취업상담 등 많은 혜택이 있다.

나는 한 달 동안 집무실을 무료로 이용할 수 있다는것이 너무 좋았다.

"서울대점" 기준으로 독서실처럼 본인만의 공간이 있었고 오픈되어있는 공간, 회의를 할 수 있는 부스 등 내부 시설도 깔끔하고 잘 되어있었다.

시간이나 의지가 생길때마다 출석하기 위한 노력을 하고 있고, 넥스터즈 프로젝트나 스터디 준비, 알고리즘 문제 풀이 등 여러가지 일을 하는 중이다.

 

RealMySQL 스터디

넥스터즈 22기가 끝나고 바로 시작했던 스터디다.

Java SpringBoot로 백엔드 개발을 진행 중이지만 DB 관련해서는 깊게 공부해본적이 없었기 때문에 시작하게 되었다.

처음 이 책을 접했을 때 "와 이건 너무 딥한데" 라는 생각이 먼저 들었다.

진짜 딥한건지 내가 몰라서 그런건지 판단을 못했지만 다른 스터디원분들도 딥하다고 말씀을 하신걸 보니 DBA 분들이 알만한 것들인가? 생각 하기도 했다.

처음에는 모든 것들을 다 정리하고 넘어가려고 했더니 진도를 따라가는데 힘들었지만

내가 당장 알아야되고, 사용해야되는 부분은 적었기에 가볍게 넘어가도 되겠다는 생각을 했다.

그래도 언젠가는 알아야될 개념은 맞기 때문에 핵심 위주의 학습을 진행할 것이다.

현재 RealMySQL 1권이 거의 마무리가 된 상태로, 다음달정도면 2권으로 넘어갈 예정이다.

2권 내용은 현재 내가 공부하기에 더 알맞다는 생각이 들어서 다른 마인드를 가지고 임할 예정이다.

 

Effective Java 스터디

넥스터즈 23기 면접때 알게되어 친해진 분과 내부 스터디를 개설하여 진행 중이다.

마침 스터디를 하나 늘리고 싶었고, 신뢰할 수 있는 분이기 때문에 같이 하게되었다.

지금까지 3회차까지 진행되었고, 스터디 진행 방식을 맞춰가는 중이다.

RealMySQL은 "내가 언젠가 사용할 수 있는 것들"이라면, Effective Java는 "당장 내가 사용하는 것들"이기 때문에 두 스터디에 대한 마음가짐이 다르다.

책을 읽어보니 내가 몰랐던 개념들이 생각보다 많았고, 이번 기회에 기본기를 최대한 다지기 위한 목표를 가지고 있다.

 

1일 1알고리즘

 

마무리

넥스터즈를 2기수동안 하면서 느낀점은 시간이 너무 빨리간다는 것이다.

특히 이번 기수는 운영진을 맡았기 때문에 22기 종료 직후에 바로 시작했는데 벌써 몇주 남지 않았다.

하반기 공채 시즌이 곧 다가올텐데 그냥 바쁘게 살자는 생각밖에 없다.

그래서인지 요즘 밤을 자주 새기도 하는데 건강은 잘 챙기도록 해야겠다.

'잡담' 카테고리의 다른 글

2000  (4) 2023.09.13
8월 회고  (2) 2023.09.05
6월 회고  (2) 2023.07.02
5월 회고  (4) 2023.06.01
4월 4주차 결산  (2) 2023.05.01

https://www.acmicpc.net/problem/12841

 

12841번: 정보대 등산

숭실 대학교 정보 과학관은 숭실 대학교 건물 중 제일 높은 곳에 있다. 민주는 평소에 버스를 타고 이 언덕을 오르지만, 이 문제에 등장하기 위하여 오늘 하루만 걸어서 올라간다. 정보 과학관을

www.acmicpc.net

출발 지점은 왼쪽, 도착 지점은 오른쪽에 있으므로 무조건 횡단보도를 건너야 합니다. 

문제에서는 1번만 횡단보도를 건널 수 있다고 제한하고 있습니다.

그렇게 되면 계산은 간단해집니다.

왼쪽 길로 가다가 횡단보도를 건너고 나머지는 오른쪽 길로만 간다는 뜻이 됩니다.

 

여기서 누적 합을 떠올릴 수 있습니다.

왼쪽, 오른쪽 길의 누적합을 각각 구합니다.

아래 코드에서는 i + 1번 지점까지의 거리를 dp[i]로 저장하고 있습니다.

따라서 i번 지점에서 횡단보도를 건너려면 dp[i - 1] 까지만 계산하면 됩니다.

dp[i - 1].first + cross[i]: 왼쪽에서 i번 지점까지 이동 후 횡단보도를 건넜을 때의 길이가 됩니다.

 

횡단보도를 건넜으니 이제 오른쪽 길에 위치해 있습니다.

따라서 N번 지점까지 그냥 가기만 하면 됩니다. (+ dp[N - 1].second - dp[i - 1].second)

 

거리가 같으면 번호가 낮은 지점을 출력해야 한다는 점만 주의하셔서 최소를 갱신해주시면 됩니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#define MAX 100001
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pii;
 
pii dp[MAX];
ll cross[MAX];
int N;
 
void func() {
    int idx = 0;
    ll ret = 1e12;
    for (int i = 1; i <= N; i++) {
        ll sum = cross[i] + dp[i - 1].first + dp[N - 1].second - dp[i - 1].second;
        if (ret > sum) {
            idx = i;
            ret = sum;
        }
    }
 
    cout << idx << ' ' << ret << '\n';
}
 
void input() {
    cin >> N;
    for (int i = 1; i <= N; i++) {
        cin >> cross[i];
    }
 
    for (int i = 1; i < N; i++) {
        cin >> dp[i].first;
        dp[i].first += dp[i - 1].first;
    }
 
    for (int i = 1; i < N; i++) {
        cin >> dp[i].second;
        dp[i].second += dp[i - 1].second;
    }
}
 
int main() {
    cin.tie(NULL); cout.tie(NULL);
    ios::sync_with_stdio(false);
 
    input();
    func();
 
    return 0;
}
cs

'algorithm > dp' 카테고리의 다른 글

boj 11560 다항식 게임  (0) 2024.06.13
boj 28018 시간이 겹칠까?  (0) 2023.08.08
boj 25427 DKSH를 찾아라  (0) 2023.05.21
boj 25682 체스판 다시 칠하기 2  (0) 2023.02.26
boj 12996 Acka  (0) 2023.01.29

https://www.acmicpc.net/problem/15926

 

15926번: 현욱은 괄호왕이야!!

첫 번째 입출력에서, 맨 처음 위치부터 4개를 잘라낸 (())가 가장 긴 올바른 괄호 문자열이다. 두 번째 입출력에서, 6번째 위치부터 8개를 잘라낸 ()((()))가 가장 긴 올바른 괄호 문자열이다.

www.acmicpc.net

주어진 입력에서 올바른 괄호쌍의 부분 문자열이 가장 긴 길이를 구하는 문제입니다.

올바른 괄호쌍을 구하기 위해서는 stack을 이용합니다.

 

기본 스택문제와 동일하게 `(`가 나오면 stack에 push, `)`가 나오면 stack에서 pop 연산을 수행합니다.

이 문제는 주어진 문자열의 인덱스를 이용합니다.

`(`가 나오면 그 인덱스를 stack에 push합니다.

`)`가 나오면 s.top의 인덱스와 현재 인덱스에 true 값을 넣습니다.

 

최종으로는 chk[i] = true인 부분의 max 길이를 구해주시면 되겠습니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <string>
#include <stack>
#include <algorithm>
#define MAX 200001
using namespace std;
 
string str;
bool chk[MAX];
int N;
 
void func() {
    stack<int> s;
    for (int i = 0; i < N; i++) {
        if (str[i] == '(') {
            s.push(i);
        }
        else {
            if (s.empty()) continue;
 
            chk[i] = chk[s.top()] = true;
            s.pop();
        }
    }
 
    int ret = 0;
    int conn = chk[0];
    for (int i = 1; i < N; i++) {
        if (chk[i]) conn++;
        else conn = 0;
 
        ret = max(ret, conn);
    }
 
    cout << ret << '\n';
}
 
void input() {
    cin >> N >> str;
}
 
int main() {
    cin.tie(NULL); cout.tie(NULL);
    ios::sync_with_stdio(false);
 
    input();
    func();
 
    return 0;
}
cs

'algorithm > data-structure' 카테고리의 다른 글

boj 21939 문제 추천 시스템 Version 1  (0) 2022.02.11
boj 17299 오등큰수  (0) 2021.02.22
boj 9372 상근이의 여행  (0) 2021.02.09
boj 1158 요세푸스 문제  (0) 2021.02.09
boj 1918 후위 표기식  (0) 2021.02.05

Nexters 23기 신입 모집

6월 첫째주에 서류 합격자분들 대상으로 면접을 진행하였다.

22기 CEO를 맡으셨던 분께 기술면접 도움을 요청하였고, 나는 인성면접을 담당했다.

지원자분들의 서류를 보내드리자마자 달려들어서 꼼꼼히 봐주셔서 너무 감사했다.

면접도 잘 못보는 내가 면접관??? 이라는 생각이 가득했고, 걱정도 많이 됐었지만 옆에서 잘 도와주셔서 금방 적응할 수 있었다.

그래도 이렇게 실력있는 분들을 내가 면접보는게 맞나 싶긴 했다 ㅎㅎ 이건 동아리니까~

 

면접 당시 마이크 음질이 너무 안좋았다는걸 면접 내내 인지하지 못했다.

녹화본을 돌려볼 때 알게되어 충격을 받았고, 뿐만 아니라 스터디룸 내 네트워크 환경도 좋지 못해 면접이 지연되기도 했다.

면접자분들께 좋은 환경을 제공해드리지 못해서 너무 죄송하다.

 

수많은 면접자분들 중에서 합격자를 가려내기란 너무 어려웠다.

녹화본을 몇 번을 돌려봤는지 모르겠다.

최대한 꼼꼼하게 점수를 매겼고, 합격자 선발을 완료했다.

 

Nexters 23기 세션 준비

신입 기수 모집을 완료했으니 본격적으로 세션 준비에 들어간다.

대관 장소 답사를 해서 PC, 빔 프로젝트, 와이파이 등 환경들을 하나하나 점검했고, 필요한 것들을 정리했다.

 

다음은 아이디어 발제.

넥스터즈 프로젝트인 "모임모임"을 활용하여 아이디어 발제를 받았다.

참여를 많이 안하시면 어떡하지 걱정을 했지만 20건이 넘는 아이디어가 등록되어 만족스러웠다.

그 중 10개의 아이디어를 선정하였고, 선정된 아이디어로 이번 기수 프로젝트를 진행할 예정이다.

 

1주차 세션 준비.

7월 1일 첫 세션이 시작된다.

OT와 팀빌딩이 진행되는 중요한 세션이기 때문에 회의를 정말 많이한 것 같다.

후원사 소개, PM분들의 발표, 팀 빌딩, 직군별 네트워킹 등 고려해야할 것들이 많았고, 생각보다 시간이 너무 부족하다는 것을 깨달았다.

최대한 시간을 쪼개고 쪼개서 효율적으로 진행하기 위한 노력을 했다.

물론 이 글은 첫 세션을 마치고 쓰는 글이고, 관련 내용은 7월 회고에서 작성할 예정이다.

 

퇴사

6월 16일 퇴사를 하고, 백수의 삶을 즐기는 중이다.

넥스터즈를 백수로 참여할 줄은 몰랐지만 그만큼 더 의미있는 서비스를 개발할 수 있도록 노력할 것이다.

퇴사하는 주에 뜬금없이 코로나에 걸려서.. 바이러스를 뿌리고 가는 느낌이라 뭔가 찝찝하기도 했다.

한분 한분 인사 드리면서 떠나려고 했지만 코로나로 인해 인사도 제대로 못하고 퇴사해버렸다.

코로나 격리 의무도 없어서 마스크 쓰고 자리에 최대한 가만히 있었지만 눈치가 너무 보였다 ㅎㅎ

 

1일 1알고리즘

 

마무리

퇴사를 하니 뭔가 공허함이 느껴졌다.

평일 오전에 일어나서 출근하는게 당연했었는데 갑자기 안하게 되니 무슨 느낌인지 모르겠다.

스터디도 하면서 재취업 준비를 하는 중이고, 넥스터즈 프로젝트도 참여할 예정이다.

팀빌딩이 완료되었는데 원하는 주제로 프로젝트를 하게되었고, 좋은 팀원들을 만난 것 같아서 좋았다.

6월은 블로그를 쉬었는데, 이제 진짜 포스팅한다..

어쩌다보니 스터디2, 넥스터즈 CTO, 넥스터즈 프로젝트를 동시에 하게 될 것 같다. 화이팅!

 

'잡담' 카테고리의 다른 글

8월 회고  (2) 2023.09.05
7월 회고  (0) 2023.08.04
5월 회고  (4) 2023.06.01
4월 4주차 결산  (2) 2023.05.01
4월 3주차 결산  (0) 2023.04.24

첫 월단위 회고, 5월에는 많은 일들이 있었다.

 

Nexters 23기 신입 모집

23기 운영진으로 활동 중이고, 5월에는 신입 회원 모집이 진행되는 일정이었다.

5.5 ~ 5.14 신입 서류 제출기간

5.24 신입 서류 결과

5.25 신입 면접 안내

현재 신입 회원 면접 준비기간이고, 이번 주말 면접 진행될 예정이다.

 

정말 많은분들이 지원을 해주셨고, 10일이라는 짧은 시간동안 검토를 해야해서 밤을 새면서까지 꼼꼼히 보려고 했다.

정말 실력있는 분들이 많이 지원해주셨는데 한정적인 티오로 인해 불합격을 드려야한다는게 안타까웠다.

특히 이번기수는 비수도권 인재분들 대상으로 교통비 전액 지원이라는 후원을 임팩트 캠퍼스를 통해 받게되어 학생/직장인 뿐만 아니라 수도권/비수도권도 고려를 해야하는 어려움이 있었다.

 

퇴사

나는 백엔드 개발자로 취업해서 들어왔지만 정신을 차려보니 5개월동안 프론트엔드 개발'만' 하고있었다.

초기에는 백엔드 개발자도 프론트엔드 개발 경험이 어느정도 도움될것이고, 병행을 해도 괜찮겠다는 생각을 했었다.

현실은 백엔드 비중은 없고, 프론트엔드 비중이 90%이상을 차지하고 있고, 앞으로 1년은 이렇게 유지될 것으로 생각하니 막막하기만 했다.

신입이라는 중요한 시기에 백엔드 경험을 쌓아야하는데 지금 이러고 있어도 되는지 생각을 정말 많이했다.

그 과정에서 번아웃이 너무 크게 찾아왔고, 어떤 일을 하든 부정적인 생각만 가득하게 되었다.

 

단순 백엔드 개발만 하더라도 내가 경험하지 못한것들, 배워야할 것들이 너무 많은데 지금 프론트엔드를 하는건 너무 이르다는 생각이 들었고, 백엔드에 집중해야겠다는 생각을 했다.

그렇게 나는 퇴사를 결심하게 되었고, 회사에 통보를 한 상태로 이번달 중에 퇴사할 예정이다.

 

1일 1커밋

2021년 7월 26일부터 667일간 진행된 1일 1커밋이 종료되었다.

매일 알고리즘을 풀고 깃허브에 push하는 과정을 반복했지만 이번에 끊겼다.

 

앞에서 언급한 번아웃이 가장 큰 원인이 아니었나 싶다.

내 스스로가 휴식을 윈했고, 주말, 연휴 할것없이 쉬기만 했다.

무언가를 회피하려고 하니 이런 기본적인 것들도 생각나지 않게되었고, 잔디에 구멍이 뚫려버렸다.

처음에는 아무 생각없이 커밋 시간 조작을 시도했으나 내 신념과는 맞지않기에 바로 취소했다.

아쉽지만 이미 지나간 일이니 다시 1일 1커밋을 진행한다.

 

solved.ac는 오전 6시 기준으로 날짜가 변경되기 때문에 스트릭이 이어지고 있다.

물론 백준은 깨졌다.

저 사이에 있는 빗금이 불편하다.

 

마무리

이제 곧 백수로 돌아간다.

백수인 상태에서 넥스터즈 23기 활동을 할 것이고, 프로젝트 참여 여부를 고민하고있다.

취업에 집중할건지 프로젝트 참여를 하면서 취준해도 될지 생각할 시간을 가져야될 것 같다.

그동안 나에게 휴식을 너무 안줬던것 같고, 기계처럼 커밋만 찍었던것 같다.

퇴사 직후에는 일단 어디든 혼자 돌아다녀보려고 한다.

그 후로는 재취업을 위해 달릴 것이다.

'잡담' 카테고리의 다른 글

7월 회고  (0) 2023.08.04
6월 회고  (2) 2023.07.02
4월 4주차 결산  (2) 2023.05.01
4월 3주차 결산  (0) 2023.04.24
4월 2주차 결산  (0) 2023.04.17

https://www.acmicpc.net/problem/25427

 

25427번: DKSH를 찾아라

준혁이는 DKSH(단국대학교부속소프트웨어고등학교)에 다니는 학생이다. 어느 날, 준혁이는 길을 걷다가 $N$ 개의 알파벳 대문자가 써있는 종이를 발견했다. 평소에 자신이 DKSH에 다니는 학생이라

www.acmicpc.net

 

4개의 문자를 제외하고 모두 제거했을 때, 남은 문자열이 DKSH일 경우의 수를 구하는 문제입니다.

DKSH의 순서를 유지해야 하며, (a < b < c < d) 조건을 만족하는 (a, b, c, d) 쌍의 갯수를 구해야 합니다.

dp[idx][pos]: list의 idx번째 문자, DKSH 중 pos번쨰 문자를 확인할 때 "DKSH"를 만들 수 있는 경우의 수

 

우선 가장먼저 떠오른 방법이 재귀입니다.

pos == 4, 즉 DKSH를 모두 찾았다면 1을 리턴합니다.

DKSH를 모두 찾지 못했는데 list 내의 문자열을 모두 확인했다면 0을 리턴합니다.

모든 인덱스에 대해 해당 문자를 고르지 않고 idx + 1, pos번째 문자를 확인할 수 있습니다.

그리고 현재 idx번째 문자와 pos번째 문자가 일치하면 idx + 1, pos + 1번째 문자를 확인합니다.

두 가지의 경우를 모두 더해주시면 답이 되겠습니다.

 

여기까지 제가 생각했던 방법이고, 이 방법을 사용하지 않은 풀이도 존재합니다.

어떤 인덱스 idx를 기준으로 경우의 수를 조합하는 방법으로는

idx의 왼쪽에서 해당되는 문자의 갯수 * idx의 오른쪽에 해당되는 문자의 갯수로 구할 수 있습니다.

 

예시로 "YYYSSS"라는 문자열로 "YS"를 만들 수 있는 경우의 수는

왼쪽의 Y1 Y2 Y3 (3개) * 오른쪽의 S1 S2 S3 (3개) = 9로 구할 수 있습니다.

이를 변형해서 Y1 (S1 S2 S3) + Y2 (S1 S2 S3) + Y3 (S1 S2 S3)로도 구할 수 있으며, 이 문제는 이 방법을 이용합니다.

이 방법을 이용하여 해결할 수 있습니다.

찾은 문자에 대해서 왼쪽에 pos-1번 문자의 카운팅이 몇번 진행되었는지 확인만 해주면 됩니다.

'D'를 찾았다면 첫번째 문자이므로 d에 1을 더합니다.

'K'를 찾았다면 앞에 'D'가 카운팅 된 d를 k에 더해줍니다.

'S'를 찾았다면 앞에 'K'가 카운팅 된 k를 s에 더해줍니다.

'H'를 찾았다면 앞에 'S'가 카운팅 된 s를 h에 더해줍니다.

출력은 h를 해주시면 됩니다.

 

첫번째 방법
두번째 방법

역시 두번째 방법이 O(N)으로 끝나기 때문에 속도가 더 빠름을 알 수 있습니다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
 
public class Main {
    private final static int MAX = 100000;
    private final static char pat[] = new char[]{'D''K''S''H'};
    private static char[] list;
    private static long dp[][] = new long[MAX][4];
    private static int N;
 
    private static long solve(int idx, int pos) {
        if (pos == 4return 1;
        if (idx == N) return 0;
        if (dp[idx][pos] != -1return dp[idx][pos];
        dp[idx][pos] = solve(idx + 1, pos);
 
        if (list[idx] == pat[pos]) {
            dp[idx][pos] += solve(idx + 1, pos + 1);
        }
 
        return dp[idx][pos];
    }
 
    private static void init() {
        for (int i = 0; i < N; i++) {
            Arrays.fill(dp[i], -1);
        }
    }
 
    private static void func() {
        init();
        System.out.println(solve(00));
    }
 
    private static void input() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
 
        st = new StringTokenizer(br.readLine());
        list = st.nextToken().toCharArray();
    }
 
    public static void main(String[] args) throws Exception {
        input();
        func();
    }
}
 
cs

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class Main {
    private static char[] list;
    private static int N;
 
    private static void func() {
        long d = 0;
        long k = 0;
        long s = 0;
        long h = 0;
        for (int i = 0; i < N; i++) {
            if (list[i] == 'D') d++;
            else if (list[i] == 'K') k += d;
            else if (list[i] == 'S') s += k;
            else if (list[i] == 'H') h += s;
        }
 
        System.out.println(h);
    }
 
    private static void input() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
 
        st = new StringTokenizer(br.readLine());
        list = st.nextToken().toCharArray();
    }
 
    public static void main(String[] args) throws Exception {
        input();
        func();
    }
}
 
cs

'algorithm > dp' 카테고리의 다른 글

boj 28018 시간이 겹칠까?  (0) 2023.08.08
boj 12841 정보대 등산  (0) 2023.07.31
boj 25682 체스판 다시 칠하기 2  (0) 2023.02.26
boj 12996 Acka  (0) 2023.01.29
boj 14450 Hoof, Paper, Scissors (Gold)  (0) 2022.12.30

+ Recent posts