2022/10/14 금요일

Gong Intaek·2022년 10월 14일
0

일상

목록 보기
492/1031
post-thumbnail

오늘 한 일

  • 프로그래머스
    • 숫자 짝꿍 (Level 1)
  • 실내 운동

문제 풀이

숫자 짝꿍 (Level 1)Github

두 정수 문자열에서 동시에 나타나는 숫자들로 만들수 있는 가장 큰수를 돌려주는 문제.

풀이 완료

두 정수 문자열의 공통요소를 먼저 구하고 그다음에 가장 큰수와 문제의 예외사항을 정리하고 계획하였다.

공통 요소를 골라내는 방식은 다음과 같다.
첫번째 첫 정수 문자열의 요소를 객체에 입력하여 요소별로 카운팅을 수행한다.

두번째 위 과정을 얻은 객체를 두번째 정수 문자열을 순회시키면서 객체내에 존재하는 정수들을 골라내고 그 갯수가 객체에 입력된 갯수를 초과하지 않게 선택한다.

세번째 위 두과정으로 골라진 공통요소는 배열로 얻어 내었으므로 크기에 따라 sort를 수행하고 그갯수가 0인경우 -1을 돌려주고 join을 사용하여 문자열로 전환했을때 문자열의 첫 정수가 0일경우 0을 돌려준다. 그 외의 경우 조함된 정수문자열을 돌려준다.

위방식으로도 문제 풀이는 가능하였다. 하지만 일부 예문(아마도 길이가 긴..)에서의 수행속도가 매우느리기에 다른 방식을 생각해보았다.

많은 값을 정렬하는 데에는 많은 연삭 작업이 진행될것이라 생각하여 해당과정을 축소하는 방법을 생각해보았다.

문제에서 얻을수 있는 정수는 0부터 9까지 이다. 이는 길이 10짜리 배열의 인덱스와 일치한다. 순서를 뒤바꾸지 않기위해 index가 0일경우 9를 나타내게하고 index 9일 때 0을 나타내게 한뒤. 위 풀이 과정에서 배열에 입력한 공통 요소를 위배열에 카운팅 하는 방식으로 수정하였다.

그리고 카운팅이 완료된 배열의 값을 바탕으로 순차적으로 문자열을 구성하였다. 입력하는 동안 정렬이 진행되었기에 추가적인 작업이 필요치않고 문자열을 완성할수 있다.

완성된 문자열의 길이가 0이면 -1 첫 문자열의값이 0이면 0을 그외의 경우 문자열을 돌려주게 구성하였고 첫 방식보다 빠른 결과를 얻을수 있었다.


추후 진행 예정인 작업(잠정 중단.)

  • socket.io 서버로 하는 단순한 멀티 룸 채팅.

  • 위의 결과를 server-side로 구현해보기.

  • firebase 사용법 배우기

  • serverless lambda 학습하기


오늘은...

업데이트되던 작업의 종료. 새로운 작업의 시작

게시판에 댓글 기능을 추가하는 작업까지 진행한뒤 해당 작업은 마무리를 지었고 새로운 작업을 시작하게 되었다. 공부나 열심히 해야겠다. 내일은 nodejs, sequalize, mysql, passport, express, passport-jwt 등등을 사용하여 로그인 로그아웃 기능을 가진 서버나 구현해보아야 겠다.(sequalize는 오랜만에 다시 건드는 것이기에 다시 공부해야할것이 많을것으로 생각 된다.)

구조를 최대한 분할하고 API route 에는 route 전송 결과만 표시하게하고 나머지 작업은 미들웨어 형식으로 구성해봐야겠다.


진행 중단중인 프로젝트

socket.io - chatapp

홈페이지 만들기

pathfinder(미로 길찾기 게임)

profile
개발자가 되기위해 공부중

0개의 댓글