본문 바로가기

알고리즘12

[프로그래머스 / Python] 과일 장수 import numpy as np def solution(k, m, score): answer = 0 # m 이 주어진 배열의 길이보다 작을 때 if m 넣으면 됨. if len(mArray) 결과에 더해주고, 비우고, 새로 넣으면 됨 elif len(mArray) == m : answer += min(mArray) * m mArray = .. 2023. 11. 7.
[BOJ / 12933 / Python] 오리 [ 문제 ] https://www.acmicpc.net/problem/12933 [ 난이도 ] 실버3 [ 필요 개념 ] 그리디.......라고 하는데 사실 몰라도 괜찮을 듯 [ 풀이 ] 솔직히 힌트가 없었다면 못 풀었을 것 같.....다. 모든 글자가 다 쓰여야 한다는 사실도 처음엔 몰랐따. 뭔가 노이즈가 껴있어도 된다고 넘겨짚은 거 같은데, 그렇게 문제를 잘못 이해하는 순간 문제 해결은 산으로 간다는 것을 느꼈다. 그리고 이번엔 처음으로.. 예외 케이스를 생각하지 못해서 중간에 틀렸습니다! 가 나왔는데.. 어디서 틀렸다는건지 모르겠어서 한참을 헤매었다. 그럴 때일수록, edge 케이스를 생각해보는 것이 상황을 진전시키는 데 도움이 되는 것 같다. [ 소스코드 ] recordedDuckVoice = in.. 2023. 9. 22.
[BOJ / 1913 / Python] 달팽이 [ 문제 ] https://www.acmicpc.net/problem/1913 [ 난이도 ] 실버3 [ 필요 개념 ] 2차원 배열에 대한 지식 정도..? 딱히 없는 듯 [ 풀이 ] 처음에는 상,하,좌,우가 몇 번을 주기로 반복되는지 여부로 생각했는데, 이걸 배열로 구현해야 한다고 생각하니 막막 >> 구현이 목적이고, 출력이 목적이므로, 적당히 규칙을 발견한 뒤에는 코드를 대략적으로 짜고 디버깅을 반복하는 것이 좋은 방법이라 생각 >> 대각선의 성질을 이용해서 문제 풀이 완료. (과정에서 배열에 직접 수를 넣으면서 코드로 예를 들어보는 것이 도움이 되었고, 로그를 찍으며 디버깅하는 것이 재미있었음. 또 웬만하면 변수로 써야 하는 부분에 상수를 써서 테스트하지 말고, 바로 변수를 넣는 것이 나중에 쓸데없는 .. 2023. 9. 20.
[BOJ / 2578 / Python] 빙고 [ 문제 ] https://www.acmicpc.net/problem/2578 [ 난이도 ] 실버4 [ 필요 개념 ] 없는 듯..? [ 풀이 ] 처음엔, 태스크를 분리시키지 않고 진행했던 것 같다. 그런데 그랬더니 내가 생각지도 못한 부분에서 에러가 생겼고.. 구조를 최대한 단순하게 잡는 것이 무엇보다 중요함을 느꼈다. 이렇게 설계하면 예외적인 상황이 안 생기겠다! 는 느낌으로 짜야하는 것 같다. 예를 들어서 지금 풀이에서처럼 아예 마킹을 딱 끝내 놓고 가로줄, 세로줄, 대각선 검사를 한다든지..! 배열의 인덱스는 0부터 시작한다는 점을 명심 또 명심.. 파이썬으로 2차원 배열 만드는 법을 익혔다. [ 소스코드 ] bingoCounter = 0 myList = [list(map(int, input().s.. 2023. 9. 20.
[BOJ / 20546 / Python] 기적의 매매법 [ 문제 ] https://www.acmicpc.net/problem/20546 20546번: 🐜 기적의 매매법 🐜 1월 14일 기준 준현이의 자산이 더 크다면 "BNP"를, 성민이의 자산이 더 크다면 "TIMING"을 출력한다. 둘의 자산이 같다면 "SAMESAME"을 출력한다. 모든 결과 따옴표를 제외하고 출력한다. www.acmicpc.net [ 난이도 ] 실버 5 [ 필요 개념 ] 그리디 [ 풀이 ] 종현이와 성민이의 현금, 매수 가능 주식 수, 보유 주식 수를 변수에 저장하고, 종현이는 그리디 알고리즘으로, 성민이는 if 문을 이용해 특정 케이스에서만 전량 매수 혹은 매도를 하게끔 유도하였다. [ 소스코드 ] seedMoney = int(input()) JHMoney = seedMoney SHM.. 2023. 9. 19.
바킹독 알고리즘 0x07강 덱 요약본 1. 덱은 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조이다. double ended queue 줄여서 deque 덱 2. 원칙적으로는 맨 뒤와 맨 앞 요소가 아닌 다른 요소들의 확인이나 변경이 불가능한, 특이하게 덱 STL 에서는 인덱스를 이용해 접근 가능하다. 3. 헤드와 테일을 두는 방식은 큐와 동일하나, 헤드와 테일의 초기값이 0이 아닌 배열의 중간 인덱스이다. 왜냐면 큐에서는 오른쪽으로만 확장하지만, 덱에서는 여의봉처럼 양쪽으로 확장하기 때문에 그렇다. 그래서 배열을 만들 때 크기를 2*MX + 1 로 해 두어야 한다. 4. STL 덱 front 에서도 O(1) 에 추가/제거가 가능하다. 그리고 Insert erase 등도 있어서 STL vector 와 비슷한 느낌이다. 다만 vector 와 .. 2023. 1. 31.