2022/08/17 수요일

Gong Intaek·2022년 8월 17일
0

일상

목록 보기
434/1001
post-thumbnail

오늘 한 일

  • leetcode
    • Smallest String With Swaps (medium)
  • 실내 운동

문제 풀이

Smallest String With Swaps (medium)Github

문자열이 주어지고 페어관계가 있는 인덱스 배열이 주어진다. 이를 통하여 만들수 있는 사전적으로 가장 작은 단어를 만들라.

풀이 시도 5

묵혀두었던 문제풀이를 다시 시작하였다. 이전의 방식을 잊고 새로이 풀이방법을 고민해보았다. 우선 단순하게 재귀를 사용하였고 재귀함수에는 현재 문자열이 입력되고 각 교환 법칙에 따라 하나하나법칙을 수행하여 문자열을 구성하고 구성된 문자열이 이미 만들어진 문자열인지를 확인하여 새로운 문자열이라면 해당 문자열을 다시금 재귀함수에넣어 가장 최소가되는 문자열을 찾게끔 구성하였다.

동작만 제대로 된다면 확실히 답을 구할수 잇는 코드이지만 역시 길이가 길어짐에따라 문제에서 용구하는 풀이 법이 아니기에 문제가 발생하는 것을 확인하였다. 하지만 기존의 수행방식 보다는 좋은 결과를 얻었다는점도 부정하기 어렵다. 좀더 괜찮은 방법을 모색해봐야겠다.

풀이중

최적의 행렬 곱셈 (Level 3)Github

주어지는 행렬 크기 배열을 행렬 곱을 진행하여 연산횟수를 구하였을 때 최소의 연산횟수를 돌려주는 문제.

문제가 되는 예문
// 테스트 2
입력값 〉   [[7, 1], [1, 6], [6, 6], [6, 5], [5, 8], [8, 9], [9, 9], [9, 2], [2, 1], [1, 9]]
기댓값 〉	349
풀이과정 : 
	1. [7, 1]
	2. [[1, 6], [6, 6], [6, 5], [5, 8], [8, 9], [9, 9], [9, 2], [2, 1]] 279
	3. [[7, 1], [1, 1], [1, 9]] => 7*1*1 + 7*1*9 =70 
	4. 279 + 70 = 349

// 테스트 3 
입력값 〉	[[3, 9], [9, 5], [5, 2], [2, 2], [2, 7], [7, 4], [4, 5], [5, 9], [9, 4], [4, 6]]
기댓값 〉	498
풀이 과정 : 
	1. [[3, 9], [9, 5], [5, 2]], [[2, 2]], [[2, 7], [7, 4], [4, 5], [5, 9], [9, 4], [4, 6]] 로 나누어  나누니것끼리 우선 계산.
    2. [[3, 2], [2, 2], [2, 6]] 을 얻을수 있으며 이때의 연산횟수는 450이다.
    3. [[3, 2],[2, 2]]을 먼저 연산하고 나머지를 연산한다. 이 경우 12 + 36 으로 총 48의 연산 횟수를 얻게 된다.
    4. 따라서 최종적으로 498의 현산횟수를 가지게 되며 이는 예측된 최소값과 일치한다.

추후 진행 예정인 작업

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

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

  • 코드샌드박스를 활용한 서버 배포


학습 진행


오늘은...

graphql 학습

구성된 wire frame에 따라 클라이언트의 뼈대 구성을 시작하였다. 대체적으로 전반적인 뼈대를 구성하였으나, 댓글과 답글 구조가 깊게 nesting 되는 구조를 이루기에 이를 좀더 분할하여 컴포넌트화를 진행해봐야겠다.


진행 중단중인 프로젝트

socket.io - chatapp

홈페이지 만들기

pathfinder(미로 길찾기 게임)

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

0개의 댓글