본문 바로가기

전체 글72

[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.
ubuntu crontab 설정하기 crontab은 윈도우의 스케줄러와 비슷한 역할을 합니다. 프로젝트에서 일주일이 지난 데이터는 db에서 삭제하기 위해 크론탭을 설정했습니다! root 계정으로 로그인해서 설정했습니다.(sudo su) 1. 크론탭 실행 설정 ~# crontab -e 명령어를 입력하면 어떤 에디터를 사용할건지 먼저 골라야 하는데 저는 nano를 사용했습니다(가장 쉽다고 적혀있어서요!) 들어가서 맨 마지막줄에 실행시킬 명령어를 적었습니다. ~# crontab -l 명령어로 자신이 설정해놓은 크론탭 파일의 정보를 볼 수 있습니다. 30 5 * * * 는 매일 5시 30분에 실행하겠다는 뜻이고, python3 cron.py 를 실행하겠다는 의미입니다. 설정에 대한 것은 다른 블로그를 참고했습니다. 그리고 python파일을 실행시.. 2020. 9. 25.
[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.