
파이썬에는 heapify 메서드가 있고 최소힙으로 구현해준다. 힙은 오랜만에 봐서 개념이 가물가물했는데 개념을 보니 대충 생각이 났다. 힙의 좋은 점은 스택, 큐와 다르게 push와 pop을 하면 바로 자동으로 최소힙으로 정렬해준다는 점! 너무 편리한 것 같다. 하지만 스택, 큐, 힙... 실력이 부족하여 문제에 적합한 자료구조를 파악하는 것은 어려운 것같다. (사실 자료구조 알아도 적용하는 것만도 힘듦 ㅋ..) k는 스코빌 지수로, 모든 값을 k이상으로 만드는 것이 목표인 문제다. (불가능하면 -1 리턴) 처음에 scoville[0]

이 문제는 처음에 문제 이해가 어려웠다. 설명이 부족한 느낌.. 결국 처음부터 마지막까지 가격이 떨어지는 구간을 확인하면 되는 문제였다. 이중포문을 사용했는데 더 좋은 풀이가 있을 것 같다. 알고리즘 1) i번째 값과 그 이후의 값들을 비교하여, 다음 값이 크거나 같다면(즉, 값이 떨어지지 않는다면) 2) 시간을 나타내는 t를 1 더해준다. 3) 만약 떨어졌다면, (else) 4) 시간을 나타내는 t를 1 더해주고(자기자신의 초) break 해준다. 5) answer리스트에 t를 넣어준다. 1)

문제를 풀며 느낀 점은 내가 큐 스택에 약한것 같다. 어느 것 하나 쉬운 문제가 없었음.. 그리고 특히 이문제가 제일 어려웠다. 코테는 대체 이런문제를 몇분 안에 풀어야하는걸까 ㅠ.. 이 문제 사실 며칠줘도 못풀것 같았음 .. 그리고 알고리즘이 생각이 나더라도 파이썬 문법이 많이 익숙하지 않아 코드를 짜는 것이 어려웠다. 약간 C언어 처음 배워서 문제 풀 때 생각대로 코딩이 안돼서 이상한 곳에서 오래 헤메는? ㅠ 그런느낌 ㅠㅠ 포문을 안써도 되는데 굳이굳이 쓴다던지 .. 이러한 부분들을 개선해야할 것 같고 기초문제부터 풀어야할 것 같다. 우선 알고리즘은, 1) truck_weights 팝하기 쉽도록 거꾸로 배열에 넣어줌 2) do 는 진행중, done 은 완료된 것 3) 모두 완료될때 까지 (while)..

결과적으로 90점이 나왔다. 하지만 오랜 시간 투자 끝에 위의 코드에서 틀린 부분을 알아낼 수가 없었다. 우선 풀이법은 다음과 같다. 1) 필요한 작업일수를 계산하여 lefts 리스트에 넣어준다. 2) cnt 리스트의 값을 작업 계수만큼 0으로 채운다. 3) lefts 리스트에서 pop한 값을 val라고 하고 나머지 lefts 원소들에서 val값을 빼준다. 4) pop했으므로 cnt 리스트에 1을 더해준다. (기본적으로 본인을 cnt하므로) 5) i는, cnt의 인덱스값을 증가시키기 위한 인덱스로, val 값이 0보다 크다면, 이전 값의 cnt에 더해주면 안되기 때문에 i값을 증가시킨다. (설명이 쓰다보니 너무 어려운데 ㅠ 그냥 pop한 값을 나머지 리스트에서 빼주고, 뺀 값이 0이하이면 시간이 pop한..

예제에 대해서는 값이 잘 나오는데 timelimit으로 통과가 되지 않는다 .. ㅠ 풀이와 생각 자체는 맞는 것 같은데 시간복잡도 때문인 것 같아서 어떻게 고쳐야할지 고민이다 .. 테스트 케이스가 두개 밖에 없어서 무척 답답하다 ㅠㅠㅠ 우선 위 풀이는, 1) 우선순위가 높은 순서로 정렬하고 tmp배열에 넣는다. 2) priorities 리스트의 인덱스를 indexs 리스트로 표현한다. 3) priorities가 tmp이면, 즉, 우선순위가 높은 순대로 내림차순한 것과 동일하다면, 제대로 정렬되었음을 확인하고 while문을 빠져나온다. 4) 첫번째 원소보다 큰 원소가 priorities에 존재한다면, 아직 정렬이 되지 않았다고 판단하고, index 배열과 priorities배열에 각각 pop후 push 해..

조합 문제 였는데 정말 기초적인 문제였음에도 불구하고 이상한 방법으로 헤맸다 ^^ .. ㅋ.. 딕셔너리 생성해서 각 종류별로 갯수를 저장해주고, 입지 않는 것까지 포함하여 dict[item]+1개를 답에 곱해준다. 마지막으로 아무것도 입지 않은 경우의 수 1을 빼주면 끄읏- 쉬운 문제였는데 삽질을 엄청 했다 .. ㅠㅠ 다른 사람의 풀이는 1줄인 것도 많았지만 사실 봐도 나중에 내가 할 수 있을 것 같지 않아서.. (특히 람다와 각종 메소드들 .. ㅠㅠ) 다른 사람 풀이는 오늘은 패스 ^^ .. (나중에 심심할 때 다른 사람의 풀이를 덧붙여 봐야겠다 ..^^ ㅎ) 오늘의 풀이 끄읕

파이썬에서 문자열 비교 시, startswith(), endswith(), in, not in을 사용할 수 있다. 공부가 목적이므로 메소드 등은 구글링하여 참조하였다. 처음에 테스트에서 통과되지 않은 항목들이 있었는데 ["123","12","1"] 등의 예시를 고려하지 못했었다. 그래서 sort로 정렬을 해주었다. 해시문제였지만 해시로는 어떻게 풀어야할지 절대 생각이 나지 않아 .. 해시를 이용하지 못했다 :-( 하지만 해시보다 복잡도는 낮다고 함..ㅋ 나와 비슷하지만 조금 차이가 있는 다른 분의 코드를 살펴보자. 다른분들은 zip() 메소드를 사용했다. zip 메소드는 여러 개의 순회 가능한(iterable) 객체를 인자로 받고, 각 객체가 담고 있는 원소를 터플의 형태로 차례로 접근할 수 있는 반복자..

엄청 빨리 풀 수 있을 줄 알았는데 시간이 꽤 오래 걸렸다. 여분이 있지만 도난당한 학생에 대해 생각하지 않은 것.. 문제를 대충 읽어서 예시에 대해서만 생각했는데 역시 문제를 꼼꼼히 읽는 것이 가장 중요하다는 교훈을 다시 얻었다 ㅋㅋ (문제 잘못 읽어서 삽질하는 게 가장 허탈한 것 같음..) 하지만 문제를 제대로 읽고 난 후에도 시간이 꽤 걸렸다 ㅠ .. for문 때문에 lost 리스트에서 어떻게 원소를 제거할 것인지 고민하느라 .. 하지만 간단하게 copy로 해결했다. 또 하나, 리스트는 원소가 없더라도 []로 출력되고 null이라 표시되지 않으므로 len을 이용해 리스트가 비어있는지 체크해줘야 한다. * i for i in reserve if i not in lost 다른 분의 코드에서 배운 새로운..
- Total
- Today
- Yesterday
- javascript
- jQuery
- bootstrap
- 정렬
- R
- 자바
- 파이썬
- web
- 프로그래머스
- Django
- 스프링
- append
- 장고
- 고득점 키트
- Oracle
- 문자열
- Java
- jsp
- CSS
- brute force
- 큐
- html
- 자바스크립트
- 덱
- 백준
- python
- Case When
- 브루트 포스
- baekjoon
- 단계별로풀어보기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |