본문 바로가기

알고리즘17

[python]programmers-방금그곡 2017 KAKAO BLIND RECRUITMENT 문제 : 방금그곡 원래의 노래가사를 재생된 시간만큼 늘려야한다. #이 붙은 것은 #을 제거해야한다.(C#을 1개로 봐야함) 내 코드 def removeS(s) : new_s = '' for i in range(len(s)-1) : if(s[i+1] == '#') : new_s += s[i].lower() elif(s[i] == '#') : continue else : new_s += s[i] if(s[-1] != '#') : new_s += s[-1] return new_s def solution(m, musicinfos): title = [] new_m = removeS(m) print('new m : ', new_m) for i in range(le.. 2020. 11. 30.
[python]programmers-뉴스클러스터링(자카드 유사도) 2018 KAKAO BLIND RECRUITMENT 문제 : 뉴스 클러스터링 입력되는 두개의 문자열의 자카드 유사도를 계산하는 문제이다. 입력되는 문자열을 두글자씩 끊어야 한다(HELLO -> HE, EL, LL, LO) 예를들어 입력된 문자열을 두글자씩 끊었을 때 str1 = {aa, aa, ab, bb, bc}, str2 = {aa, aa, ab, ab, bb}라고 해보자. str1 | str2 (합집합) = {aa, aa, ab, ab, bb, bc} str1 & str2 (교집합) = {aa, aa, ab, bb} 일반 집합의 합/교집합 결과와 다르게, 만약 aa가 두 문자열에 두번 나타나면 aa 두개가 합집합, 교집합에 들어간다. 만약 str1에는 ab가 2개, str2에는 ab가 하나라면, 교.. 2020. 11. 30.
[python]programmers-캐시 2018 KAKAO BLIND RECRUITMENT 문제 : 캐시 캐시사이즈와(cacheSize) 읽을 데이터(cities)를 주고 지금 읽는 데이터가 cache에 있으면(hit) 실행시간+1, 없으면(miss) 실행시간+5 를 해주어 최종 데이터를 읽는 시간이 얼마인지 알아내는 문제이다. 캐시 교체 정책은 LRU 방식을 이용한다. 만약 캐시에 [1, 2, 3]이 있고, 현재 1을 조회하려고 하면 hit이고(실행시간+1), 가장 최근에 조회된것은 1이다. 이때 4가 들어온다면, 1이 아닌 2가 제거되고 캐시에는 [3, 1, 4]가 남는다(운영체제를 배우지 않았다면 아마 헷갈릴수도 있을듯!) 내 풀이 def solution(cacheSize, cities): time = 0 cache = [] if(cac.. 2020. 11. 30.
[python] 소수찾기 - 에라토스테네스의 체 프로그래머스 소수찾기 문제. 그냥 for 문 두개를 써서 자신보다 작은수로 일일히 나누면 시간초과가 나는 문제. 에라토스테네스의 체 알고리즘을 사용해서 푼다. 참고사이트(언어별 알고리즘 구현까지 있다) 1. 에라토스테네스의 체의 알고리즘 1. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다. 2. 2는 소수이므로 오른쪽에 2를 쓴다. 3. 자기 자신을 제외한 2의 배수를 모두 지운다. 4. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. 5. 자기 자신을 제외한 3의 배수를 모두 지운다. 6. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. 7. 자기 자신을 제외한 5의 배수를 모두 지운다. 8 .남아있는 수 가운데 7은 소.. 2020. 9. 11.
[python]programmers-수박수박수박수 level1 문제 : 수박수박수박수? 1. 내풀이 def solution(n): answer = '수박'*(n//2) + '수'*(n % 2) return answer print(solution(3)) print(solution(4)) '수'와 '박'을 번갈아 가면서 주어진 숫자길이에 맞게 string을 리턴하는 문제이다. 홀수면 마지막에 '수'가 붙을 것이고, 짝수면 '수박'이 여러번 반복된 형태로 나타날것이다. 그래서 '수박'을 2로나눈 몫만큼 반복해주고 마지막에 2로나눈 나머지만큼 '수'를 붙여준다. 짝수면 나머지가 0이므로 '수'가 붙지 않을 것이다. 만약 1이면 2로나눈 몫이 0이므로 '수박'이 출력되지않고, 나머지가 1이므로 '수'만 출력될것이다. 2020. 8. 27.
[python]programmers-같은숫자는 싫어 level1 문제 : 같은숫자는싫어 1. 내풀이 def solution(arr): answer = [] i = 0 while (i < len(arr) - 1): if (arr[i] != arr[i+1]) : answer.append(arr[i]) i = i + 1 answer.append(arr[-1]) return answer 처음엔 리스트에 어떤 숫자만 있는지 출력하는 줄 알고 set으로 바꾼후 리스트로 변환하여 리턴했는데 문제는 그게아니었다(문제를 잘읽자!) 현재의 숫자와 다음의 숫자가 같은지 확인해야하므로 반복문을 돌렸고, 앞의 숫자와 뒤의 숫자가 달라지는 시점에 앞의 숫자를 list에 append했다. 이때 마지막에 있는 숫자(혹은 숫자들)은 다음 숫자와 같은지 다른지 비교를 못하기 때문에 마지.. 2020. 8. 27.