본문 바로가기

Algorithm48

[프로그래머스] 주식가격 파이썬 다른 사람의 풀이 from collections import deque def solution(prices): answer = [] prices = deque(prices) while prices: c = prices.popleft() count = 0 for i in prices: if c > i: count += 1 break count += 1 answer.append(count) return answer 문제가 약간 헷갈리게 되어있다. 테스트 케이스: [1, 2, 3, 2, 3, 1] 3번째 가격인 3같은 경우 3 -> 2로 될때 1초 동안 가격이 떨어지지 않았기 때문에 += 1을 해주고 break 해줘야 한다. 처음 풀었을 때는 이것도 1초뒤에 떨어졌기 때문에 += 1을 안해주는 거라고 생각 했.. 2021. 3. 3.
[프로그래머스] 스킬트리 파이썬 def solution(skill, skill_trees): flag = 0 for trees in skill_trees: skill_check = [] for a in trees: if a in skill: skill_check.append(a) for i, v in enumerate(skill_check): if v != skill[i]: flag += 1 break return len(skill_trees) - flag solution("CBD",["BACDE", "CBADF", "AECB", "BDA"]) 가장 생각이 안났던 부분은 check 리스트의 길이가 skill 리스트 보다 짧을 경우 어떻게 처리해야되는가 였는데 그냥 check_list 만 순회하면서 값을 비교하면 되니까 문제가 없다. -.. 2021. 3. 3.
[프로그래머스] 프린터 파이썬 다른 사람의 풀이 def solution(priorities, location): answer = 0 from collections import deque d = deque([(v,i) for i,v in enumerate(priorities)]) while len(d): item = d.popleft() if d and max(d)[0] > item[0]: d.append(item) else: answer += 1 if item[1] == location: break return answer index와 value 두 가지가 동시에 필요할 때는 tuple를 활용하기 stack 문제의 경우 deque를 써서 양방향 queue를 사용하면 편하다 enumerate 함수를 사용해서 (index, value) .. 2021. 3. 3.
[프로그래머스] 124 나라의 숫자 진법에 관한 문제인데 살짝 꼬아서 만든 문제 수를 표현할때 124만으로 표현한다고 하고 규칙은 3진법과 같음을 알 수 있다. 다른점은 3대신 4가 사용된다는 점이다. 1부터 9까지 3진법을 사용할 경우 1,2,3 11,12,13 21,22,23 이런식으로 표현이 되는데 여기서는 3대신 4를 써야하기 때문에 1,2,4 11,12,14 21,22,24 이런식으로 결과물이 출력 되어야 한다. 다른 사람의 풀이 def solution(n): num = ['1','2','4'] answer = "" while n > 0: n -= 1 # zero indexing answer = num[n % 3] + answer n //= 3 # 몫 값을 업데이트 하면서 자리수 증가 return answer 3대신 4를 리스트 .. 2021. 3. 2.
[프로그래머스] 서울에서 김서방 찾기 (JS, Python) Javascript Python에서 format와 유사한 기능을 하는 메서드를 찾다가 발견한 것 "~" 키와 같이 있는 "`" 따옴표 비슷하게 생긴 얘는 grave accent 혹은 backtick이라고 불린다. 언어에서는 프랑스어나 포르투갈어 등에서 사용하는 accent 기호. Template literals (Template strings) Template literals are enclosed by the backtick (` `) (grave accent) character instead of double or single quotes. Template literals can contain placeholders. These are indicated by the dollar sign and cur.. 2021. 2. 4.
[프로그래머스] 문자열 다루기 기본 (JS, Python) JS function solution(s) { let pattern = /\d+/; if (s.match(pattern)===null) return false let l = s.match(pattern)[0].length; if (l === s.length) { if (l === 4 || l === 6 ) { return true } else return false } else return false } function solution(s) { let regex = /^\d{6}$|^\d{4}$/; return regex.test(s); } 아래 파이썬 솔루션과 비슷하지만 다른점은 ^와 $를 사용해서 문자열의 처음과 끝을 지정하는 방식인데, JS 에서는 regex 표현을 ^와 &를 둘다 사용해야 한다는 .. 2021. 1. 30.
[프로그래머스] 문자열 내림차순으로 배치하기 (JS, Python) JS function solution(s) { return s = s.split('').sort().reverse().join(''); } python def solution(s): return"".join(sorted(s, reverse=True)) python 에서는 string을 sorted의 input으로 넣으면 자동으로 split된 element들이 들어있는 array를 return 한다. JS 에서는 split을 사용해서 나눠준다음에 sort().reverse() 해주면 reversed sorting 된 array가 만들어지고 뒤에다 join 메서드를 입력한다. 반면 python을 join메서드로 결과물을 감싸주는 것이 다르다. 2021. 1. 29.
Javascript Regex flag 예를 들어, re = /\w+\s/g 는 한 개 이상의 문자열 뒤에 공백이 하나 있는 패턴을 찾는 정규식을 생성합니다. 그리고 문자열 전체에 걸쳐 이 조합을 검색합니다. var re = /\w+\s/g; var str = "fee fi fo fum"; var myArray = str.match(re); console.log(myArray); // ["fee ", "fi ", "fo "] 아래 코드는: var re = /\w+\s/g; 이렇게 바꿔쓸 수 있습니다: var re = new RegExp("\\w+\\s", "g"); 플래그는 동시에 사용이 가능 ex. /\w+\s/g; "/\w+\s/ig"; ref developer.mozilla.org/ko/docs/Web/JavaScript/Guide/%E.. 2021. 1. 29.
[프로그래머스] 문자열 내 p와 y의 개수 (JS, Python) JS 솔루션을 검색해보기 전까지 시도했던 방법은 regex를 사용해서 string.match() 메서드로 찾고자 하는 단어를 포함하는 새로운 array의 length를 return 하는 방법이였는데, 이 경우에는 문제점이 찾고자 하는 단어가 없으면 return null 하기 때문에 null 값에 대한 조건이 추가되기 때문에 error-prone한 방식이라서 이 점을 유의해야겠다. s.match(/p/g).length 찾은 답안은 아래 function solution(s){ return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length; } 답안을 보면, split 메서드를 사용하면서 쉽고 간편하게 해결하는 모습이다. 찾고자 하.. 2021. 1. 29.