알고리즘 4

<릿코드> 5. Longest Palindromic Substring

거의뭐 될때까지 냈는데 ; 알고리즘 상 단축을 못시키겠어서 가장 큰거 부터 찾으면 그만 두게하고, 캐쉬를 사용하긴 했는데 (효용이 있는건지;) 가장 큰거부터 찾으니까 단축이 잘되긴했다. 근데 아래 답도 시간 순위 너무 낮고, 2번 제출해보니까 시간 다르길래 3번째 내니까 겨우됐음. 좋은 답은 아닌듯... class Solution { var cache = [[Bool]](repeating: Array(repeating: false, count: 1001), count: 1001) var maxLength = 0 var maxStr: String? func longestPalindrome(_ s: String) -> String { let strArray = Array(s) for k in 0.. Bool..

<프로그래머스> [카카오 인턴 2020] 수식 최대화

스위프트로 구현한 코드이다. 고민했던 점은 이걸 완전탐색으로 하는 수 밖에 없나 고민했었다. 근데 수식도 100자리 이하고, 연산 우선순위 바뀌는 경우도 12가지라 시간 복잡도를 계산하면 1초안에 들어와서 완탐을 목적으로 낸 문제가 맞다 생각했다. (다른 효율적인 방법이 있다면 댓글좀 ㅠㅠ) 또 고민의 과정은, 문자열을 어떻게 리스트로 파싱할지, parse는 안된다는 결론이 났다. +-*/ 네가지로 분할해야 되서, 그래서 리스트로 순회하면서 숫자랑 연산기호를 따로 읽고 저장하는 식으로 했다. 이제 연산을 해야되는데, 일반적으로 스택을 사용한 연산을 하는걸 알고 있다. 그런데 오래되서 스택으로 하는 방법을 아무리 생각해도 안나더라.,... 쉬운문제 부터 다시 해봐야 겠다. 그래서 스택을 사용하지 않고 리스..

프로그래머스 - 스택/큐 : 프린터, 쇠막대기, 주식 가격

프린터 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 1번은 수행이 매우 단순하다. 2번 부분에서 뒤에 중요도가 높은 문서가 한 개라도 존재하는지가 문제 해결의 부분인거 같다. 내 생각에는 맨 처음에 대기 목록에서 맨 앞에 것을 제외하고 가장 높은 우선 순위를 max_priority에 저장한다. max_priority > J 이면 J를 대기 목록 맨 뒤에 넣는다. max_priority < J이면 출력하고 order를 1 증가한다 . J가 location이면 order를 출력한다. 근데 max_priority는 뒤에 가장 ..

프로그래머스 - 스택 : 탑, 다리를 지나는 트럭, 기능개발

스택은 진짜 그냥 맨날 나오는 문제 유형이다. 면접에서도 중요한 개념으로서 이용하라고 문제 냈는데 틀렸다.... 탑 사실전에 백준에서 풀어본 문제다. 그럼에도 풀이가 기억나지는 않음 스택을 쓴다는 것 정도 ㅋㅋ. 코딩테스트에서도 실제로 만났던 문제인데 그 당시에는 풀 줄 몰랐다. [6,9,5,7,4] [0,0,2,2,4] 예제를 분석해보면 6은 맨 왼쪽이라 0 , 9는 왼쪽에 자기보다 큰게 없어서 0, 5는 왼쪽에 9가 있으니 2, 7도 왼쪽에 5는 스킵되고 9가 있으니 2, 4는 7이 바로 왼쪽에 있으니 4이다. 그럼 목표는 모든 위치에서 왼쪽에 가장 먼저 자기보다 큰 기둥을 찾는 것이다. 스택에 넣다가 해당 위치에서의 답을 구하려면 스택에서 빼면서 먼저 만나는 자기 보다 큰 값을 확인하면 될거 같은데..