Algorithm & Data Structure/Programmers

https://programmers.co.kr/learn/courses/30/lessons/62049

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

동적계획법 문제같습니다.

규칙을 찾는게 어려웠던 문제였습니다.

 

종이를 접을때마다 이전 숫자 뒤에 0이 붙고,

붙은 0 뒤에 이전 숫자의 뒤에서부터 1이면 0, 0이면 1 로 반전되서 붙습니다.

0

0 0 1

0 0 1 0 0 1 1

>> 0 기준 좌우 반전

 

 

* 자료구조를 잘 선택해야 시간초과에 안걸립니다.

  1. String, StringBuilder로 해결한 방법
  2. Stack의 후입선출 을 사용한 방법

위 두 가지 방법으로 해결해 보았습니다.

 

 

https://programmers.co.kr/learn/courses/30/lessons/42890

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

Next Permutation을 사용하여 컬럼(속성)들을 조합해 키를 만들고 유일성과 최소성을 차례대로 검사합니다.

유일성을 검사할때 HashSet의 중복을 허용하지 않는 속성을 이용합니다.

최소성은 키로 만들어진 속성집합을 다시 쪼개어 유일성을 검사합니다.

이때, 쪼갠 키가 유일성을 만족하면 최소성을 만족하지 못합니다.

즉, 쪼개어진 키는 유일성을 만족하면 안됩니다.

 

https://programmers.co.kr/learn/courses/30/lessons/42888

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

채팅방 로그관리 문제 였습니다.

 

HashMap 과 Queue 자료구조를 사용했습니다.

 

HashMap엔 UID와 NicName 을 저장하고,

Queue엔 UID와 출입여부(로그)를 저장 하여 따로 관리합니다.

* UID가 기본키 역할을 합니다.

* 출입여부(로그)를 저장하는 자료구조를 ArrayList 혹은 LinkedList로 하면 시간초과가 발생합니다,

이유는 문제에서는 로그정보를 기록(삽입)만 하고, 기록된 정보의 '선입선출'(삭제) 이 필요하므로 Queue를 사용하는게 성능이 더 좋습니다.

* 삽입 혹은 삭제 기능만 필요할때는 Stack이나 Queue를 사용하는게 성능이 좋습니다.

 

정렬 문제였습니다.

배열의 부분 집합을 정렬한 뒤 k번째 인덱스 원소를 출력하면 됩니다.

 

+ Recent posts