[Programmers] 전화번호 목록
·
Algorithm/Algorithm (문제풀이)
문제 해결 방법 (1) 접두어 -> 길이가 짧을 수록 접두어 Matching 될 확률이 증가함 -> Sort 아이디어 떠올림. (2) 이중 For loop 반드시 첫자리 원소가 접두어인 것이 아니라 모든 원소가 서로 접두어 관계를 갖지 않는지 확인해야할 필요가 있음. 실수 (1) break break문은 하나의 Loop 만을 탈출한다는 사실을 망각하고 다음과 같이 작성했었다. 이중 for loop 안에서의 break은 2번째 loop은 탈출하지 못한다. 물론 정답을 도출해 내는데는 영향을 미치지 않지만 Time Complexity 증가의 원인이 된다. (2) compare 오름차순 정렬을 전화번호의 '길이'를 기준으로 시도하기 위해 compare 함수를 다음과 같이 작성했었다. 근데 요놈이 효율성 검사에..
[Programmers] 네트워크
·
Algorithm/Algorithm (문제풀이)
문제 문제 이해하기 여타 다른 문제와 입력값이 좀 다른데 다른 문제는 보통 graph matrix를 제시하고 1,0으로 vertex가 존재하는지 존재하지 않는지를 표현한다면 이 문제는 adjacecy matrix를 아예 입력값으로 제시한다. 때문에 다음과 같이 해석했다. (0)번 노드 기준 (1)번 노드 기준 (2)번 노드는 아무런 노드와도 연결되지 않았다. (2번 행 또는 열에서 자기 자신을 제외한 모든 원소 0) (3)번 노드 기준 따라서 위와 같은 4*4 인접 행렬이 주어졌을때 return 값 (그래프 수)는 2가된다. 해결 방법 방문 여부를 keep하는 visited[]행렬 대신 BFS로 방문하며 방문했던 노드의 자리를 0값으로 대치하여 모든 행렬의 원소가 0이될 때까지 BFS의 호출 수를 증가시..
[Programmers] 키패드 누르기
·
Algorithm/Algorithm (문제풀이)
문제 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 해결 방법 (1) 키패드간 거리가 '직선'이 아니라 상하좌우로 제한됨 -> X,Y 좌표계 도입! (2) [1,4,7]-> L, [3,6,9] -> R 고정이고 [2,5,8,0] 만 거리 계산이 필요함. // 거리가 같다면 hand 값 따지기 (3) 입력값은 모두 '숫자'지만 초기 왼,오른손은 '*', '#' character -> 어차피 정수로 변..
[Programmers] 체육복
·
Algorithm/Algorithm (문제풀이)
1. 문제 2. 아이디어 0. 이 문제의 답은(전체 학생수 - 잃어버린 학생수)로 구하자. -> lost 배열의 원소를 제거하는 방식으로 풀어가자. 1. 도난당한애 == 여벌있는애 일 경우부터 삭제하고 시작하자. ∵ 어차피 여벌있으면서 도난당한애는 다른애한테 빌려주지 못한다. 2. 앞번호 먼저 검사 뒷번호 후검사를 하자. // Mistake 3. 주의사항 for(index in lostList.indices) { // 잃어버린 애, 가져온애가 같으면 양쪽 리스트에서 둘다 삭제 if (reserveList.remove(lostList[index])) lostList.removeAt(index) } for loop에서 index를 활용하여 '정순'으로 순환하면서 컬렉션의 원소를 제거하는 경우 원소가 제거된 ..