프로그래머스) 단어 변환 github/DFS%2CBFS 최단거리가 필요한만큼 DFS가 아닌 BFS를 이용하였음. 각 단어를 node로 보고, 한글자 차이로 변환가능하면 인접한 edge로 설정. begin노드 ~ target노드까지의 최단거리 구함. BFS의 기본구조는 일반적인 형태를 따름 (블로그 포스팅 기본코드 참고) 이때, while문에서 distance 카운트시 depth에 상관없이 노드를 방문할때마다 카운팅 되버린다. 따라서 아래와 같이 queue size를 이용한 for문 추가. 참고자료 https://www.acmicpc.net/board/view/12343 큰 차이는 아닌데, v2 코드와 같이 별도의 Node클래스 객체를 생성하거나, node.edge로 distance를 카운팅하거나, isN..
프로그래머스) 가장 큰 수 github/Sort 간단해보이지만 생각보다 어려웠던 문제다. numbers원소는 다행히 1000까지지만 갯수가 10만개까지 들어올수있어, 의외의 테스트케이스가 굉장히 많이 생긴다. 알고리즘으로 각 경우를 나눠 논리적으로 풀다가 너무 복잡해 결국 기본 sort함수를 이용. 물론 Comparator는 override해서. 나와 비슷하지만, compare함수를 이용하면 라인수가 살짝 더 줄어들긴함. 가독성은 나처럼 풀어쓰는것이 더 나은것 같다. 나는 "0000...0"->"0" 필터링을 하기위해, string의 모든 각 자리를 검사후 0이 아닌수를 만나면 for문 탈출후 return하게하고, 모든 자리가 0으로 판별나면 "0"을 리턴하게 했다. 위의 방법처럼 한다면, 첫자리만 검사..
프로그래머스) 다리를 지나는 트럭 github/Stack%2CQueue 큐를 정직하게 사용하기보다, 배열로 거리를 관리하고 left, right 역할의 두 변수로 비즈니스 코드를 해결했다. 나름 만족. (문제의 1차선도로 기능을 잊고 동시에 트럭의 출입이 가능한것으로 오해해, 추가적인 for문과 그 인덱스 관리하느라 삽질하며 시간소비함) v2 코드처럼 truckStack 스택과 bridgeMap 해시맵을 이용한 풀이도 있다. 전체적인 로직은 나와 비슷하지만, HashMap과 그 함수를 이용한 점, answer 시간값을 거리계산에 이용한 점 등은 주목할만하다. 자세히 읽어보진 않았지만, v3 코드처럼 정직하게 Queue를 이용해 코드의 가독성과 그 의미에 더 집중한 풀이도 있긴하다.
프로그래머스) 기능개발 github/Stack%2CQueue ver2 코드와 내 코드를 비교하면, 효율성의 차이가 매우 크다. 내 코드는 메모리공간도 더 사용하고, progress + n*speed 방식이 아닌, 매n마다 더하고 있으며, 이에따라 역시 매n마다 100을 넘었는지도 체크한다. Queue 문제라는 점이 오히려 사고를 제한할수도 있겠다. 좀더 자유롭게 생각해보자. * 특히 내 코드처럼 큐나 리스트 같은 자료구조를 순회하면서 동시에 삽입/삭제 작업을 하는것은 안정적이지 못하다. iterator도 없이. 그래서 queueSize 변수를 별도로 만들어서 for문 돌려야 제대로 동작했었음.
프로그래머스) 타겟 넘버 github/DFS%2CBFS https://lkhlkh23.tistory.com/74 위 링크를 참조해, 그래프를 보면 직관적으로 BFS보단 DFS를 사용해야함을 떠올릴수있다. 종료조건은 depth limit에 도달했을때(배열의 모든원소에 접근했을때)이고, 점화식은 좌측leaf는 +로, 우측leaf는 -로 가정해 계산해낸다. depth limit에선 target값과의 대조를 통해 카운팅(1)할지 / 말지(0) 결정한다.
- Total
- Today
- Yesterday
- Algorithm
- socket
- git
- OneToMany
- sort
- brute-force
- 회고
- 프로그래머스
- 웹해킹
- C
- queue
- Java
- Stack
- 개발자
- graph
- Android
- javascript
- reversing
- Data Structure
- Android Studio
- 해외여행
- bfs
- 리버싱
- 우아한 테크코스
- FRAGMENT
- Vo
- dfs
- webhacking.kr
- mysql
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |