프로그래머스) 완주하지 못한 선수 내 풀이 구현은 쉬우나, 어떻게 효율적으로 돌릴지 고민 Sorting을 하여, 차례대로 확인하다가 값이 다르면 해당값을 리턴한다. 예외처리 : 미완주자가 participant의 맨마지막에 위치할 경우, for문안에서 해결되지않으므로 별도로 마지막 값 리턴 v2 Hash 카테고리에 위치했기 때문에, 처음 고민할때 생각했던 방법. participant는 1을 더하고 completion을 1을 뺀 후, 0이 아니면 리턴하는 방식 map.getOrDefault(~, ~) 메소드가 생각나지 않아 구현보류. Collections Framework에 대해 더더욱 잘 알도록 하자. v3 내 방식이랑 똑같다. 다만 나처럼 별도로 List 자료구조를 생성할 필요가 없었다. sorting을..
프로그래머스) 소수 찾기 소수 판별은 예전에 다뤘던 '에라토스테네스의 체'를 이용할것으로 쉽게 떠올릴 수 있었다. 주어진 입력값을 이용해 가능한 모든 형태의 숫자를 만들기 위해, 방법을 알아보다가 '순열과 조합'을 알게되었다. permutation과 소수판별은 알고리즘을 크게 변경시킬부분이 없어, 방법만 떠올리면 문제는 금방 해결된다. 각 알고리즘에 대한 자세한 설명은 기존의 포스팅을 참고하자. 다른 사람 풀이중, 의외로 소수판별을 순회를 반복하는 노가다로 구현한 코드가 많았고, 순열코드도 제각각이었다. 맨위에 랭크된 코드는 의외로 별로였고, v2와 같은 코드가 나와 비슷하게 괜찮았다. 비슷한 방식으로 소수판별을 수행하며, permutation코드도 나와는 다른 방식이다. g..
프로그래머스) 카펫 github/Brute-Force v2는 내 코드를 좀더 정리시킨 느낌. 가독성 더 낫다. 역순으로 인덱스를 감소시키지않고, 좀더 직관적으로 height=1부터 증가시키며 if문을 하나로 합치고, brown넓이 구하는 방식을 '2(가로+세로)+4귀퉁이'로 구함. v3는 기하적으로 이차방적식을 이용한다. a는 전체 직사각형의 가로+세로이며, b는 가로*세로이다. 이를 만족하는 (가로,세로)값을 구하면 되므로, 이차방정식을 이용해 두 해 x1, x2가 가로,세로인 x2-ax+b=0 이차방정식을 만들어 근의공식을 이용해 푼다. (위의 이차방정식 형태에서 원래 a는 두 해의 합, b는 두 해의 곱이다)
프로그래머스) 숫자 야구https://programmers.co.kr/learn/courses/30/lessons/42841 github/Brute-Force 숫자야구 구현하는 방법은 많이 있지만, 예전에 한번 작성했던 코드로 구현함. strike 갯수를 먼저 구하고, ball을 중복포함해 구한뒤 strike갯수 빼는 방식. 게임환경 조성을 위해 checkZero(), checkDuplicate() 메소드도 추가로 구현. v2와 같은 코드도 있다. 두 코드 모두 모범답안은 아님. 가볍게 작성하고 넘어간 문제.
프로그래머스) 단어 변환 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"을 리턴하게 했다. 위의 방법처럼 한다면, 첫자리만 검사..
- Total
- Today
- Yesterday
- git
- OneToMany
- 개발자
- 웹해킹
- brute-force
- Android Studio
- FRAGMENT
- C
- sort
- Data Structure
- dfs
- socket
- 우아한 테크코스
- bfs
- Vo
- graph
- 프로그래머스
- reversing
- Java
- Stack
- webhacking.kr
- 회고
- Android
- JPA
- 해외여행
- javascript
- queue
- 리버싱
- mysql
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |