비전공자 공부일기/:: ALGORITHM
-
[알고리즘] 최대공약수 구하기 - 파이썬비전공자 공부일기/:: ALGORITHM 2021. 10. 20. 22:31
방식 1. 큰 수에서부터 나눠보며 깎아나가기(?) def solution(a, b): i = min(a, b) while True: if a % i == 0 and b % i == 0: return i i = i - 1 방식 2. 유클리드 # 유클리드 알고리즘 # 수학자로 유명한 유클리드(Euclid)의 발견에 따르면, 최대공약수에 다음과 같은 성질이 있다. # a와 b의 최대공약수는 'b'와 'a를 b로 나눈 나머지'의 최대공약수와 같다. 즉, gcd(a, b) = gcd(b, a%b) # 어떤 수와 0의 최대공약수는 자기 자신이다. 즉, gcd(n, 0) = n def solution(a, b): if b == 0: return a return solution(b, a%b)
-
[Solv:프로그래머스] 그리디 Greedy - 조이스틱비전공자 공부일기/:: ALGORITHM 2021. 10. 13. 23:58
문제 설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 예를 들어 아래의 방법으로 "JAZ"를 만들 수 있습니다. - 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다. - 조이스틱을 왼쪽으로 1번 조작하여 커서를 마지막 문자 위치로 이동시킵니다. - 마지막 위치에서 조이스틱을 아래로 1번 조작하여 Z를 완성합니다. 따라서 11번 이동시켜 "JAZ"를 ..
-
[Solv:프로그래머스] SQL JOIN - 보호소에서 중성화한 동물비전공자 공부일기/:: ALGORITHM 2021. 10. 11. 20:15
문제설명 보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요. 내 풀이 구질구질하게 풀었음. 내가 좋아하는(?) not in 쓰는 이중쿼리와 조인문 둘다 쓴 버전 SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE 1=1 AND INS.SEX_UPON_INTAKE like 'Intact%' AND OUTS.SEX_UPON_OUTCOME NO..
-
[Solv:프로그래머스] SQL JOIN - 오랜 기간 보호한 동물(1)비전공자 공부일기/:: ALGORITHM 2021. 10. 11. 19:27
문제 (너무 길어서 핵심만 가져옴) 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다. 내 풀이 썰풀기 - 이중쿼리 원래 JOIN문 써서 풀어야 하는데 내가 실제로 회사에서 젤 많이 쓰는 방법으로 풀음 그것은 바로 NOT IN을 이용한 이중쿼리 보호소에 들어온 동물들(ANIMAL_INS 테이블) 중에서 입양간 동물들(ANIMAL_OUTS 테이블)이 없으면 아직 입양 못갔다는 말이므로(문제에 감정이입되네 슬펑..) 이 중에서 날짜로 정렬한 뒤 3줄만 뽑으면 된다. 1. 입양 못 간 동물들 걸러내기 ---- ANIMAL_ID NOT IN (SELECT ANIMAL ID FROM ANI..
-
[Solv:프로그래머스] 정렬 - 가장 큰 수 파이썬으로 풀기비전공자 공부일기/:: ALGORITHM 2021. 10. 11. 13:18
문제설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 내가 작성했던 의사코드 ** keypoint ** 1)..
-
[Solv:프로그래머스] 정렬 - K번째 수 파이썬으로 풀기비전공자 공부일기/:: ALGORITHM 2021. 10. 11. 13:01
요즘 알고리즘 공부를 다시 시작하면서 기왕이면 파이썬으로 풀기로 했다. 코테준비는 파이썬 또는 C++로 하라고 들었었는데, 새로운 언어를 배우는 것이 영 부담이었다가 언젠가는 파이썬을 배워야 내가 원하는 커리어상 다음 스텝을 갈 수 있을거라 생각했고 그렇다면 기왕이면 지금부터 익숙해져 놔서 손해볼 것이 전혀 없었다고 판단했다. 간단한 문법정도 배웠다가 까먹기를 몇 번 했던 파이썬. 이번에 다시 손에 잡아보니 확실히 처음에는 읭?? 하다가 익숙해지니까 증맬루 개사기언어다.... 너무 편하자넝 비전공자 시절에 개발을 아예 모르고 파이썬 배워야 할까? 자바 배워야 할까? 고민했던 게 떠올랐다. 파이썬 배우고 자바로 넘어가려 했으면 나 걍 포기했을듯.... 자바로 시작하길 잘했다. 무튼 잡썰은 그만두고 문제 솔..
-
[Solv:Codility] 코딜리티 Lession1 - Iterations (반복문) binary gap 자바비전공자 공부일기/:: ALGORITHM 2021. 7. 25. 22:11
요즘 대기업에서도 IT 직군 뽑을 때 인적성 대신 코딩테스트가 기본이 되어버린 듯 하여.. 여러 코테 플랫폼에 익숙해지기 위해 코딜리티도 뚫었다. 외국 사이트여서 문제도 영어로 나오는데 그래도 몇 기업에서 코테플랫폼으로 쓰고있다. 1번 예제 풀이 올림 - Java 자바 https://app.codility.com/programmers/lessons/1-iterations/binary_gap/ 문제요약 : 주어진 자연수를 이진수로 나타냈을 때, 1과 1 사이에 나타나는 0들을 binary gap이라고 한다. i) 1과 1 사이의 0의 집합 1개를 binary gap 1개라고 하며, ii) 11, 1000 처럼 1 사이에 0이 없거나 마지막이 0으로 끝나는 경우는 gap 이라고 하지 않는다. 이 때 주어진 ..
-
-
[인프런 알고리즘] 섹션2. 정렬(Sorting) - (1)선택정렬비전공자 공부일기/:: ALGORITHM 2020. 3. 8. 23:04
선택정렬 (Selection Sort)