코딩테스트 77

[프로그래머스] [SQL] 오랜 기간 보호한 동물(1)

일주일만에 하는거 같은데... SQL로 돌아옴! 전에 조금 풀어놨었는데 뭐가 안되는지 안풀려서 방치해놨던거 다시 풀었다 최근에 코테를 쳤는데 거기선 서브쿼리보다 조인에 더 많은 점수를 준대서 서브쿼리를 안쓰고 풀었는데(다풀진 못했지만) 그래서 이 문제에서도 서브쿼리 욕심 버리고 풀어봄 LEFT OUTER JOIN 쓴 이유는 입양을 가지 못한 애들을 NULL로 받을려고 SELECT ANIMAL_INS.NAME, ANIMAL_INS.DATETIME FROM ANIMAL_INS LEFT OUTER JOIN ANIMAL_OUTS ON ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID WHERE ANIMAL_OUTS.DATETIME is null ORDER BY ANIMAL_INS...

코딩테스트 2023.11.17

[프로그래머스] [SQL] 대여 기록이 존재하는 자동차 리스트 구하기

머리가 안돌아간다 SQL 풀기 SELECT 절에서 서브쿼리써서 풀고 싶었는데 생각보다 잘 안풀려서 이럴거면 그냥 안쓰는게 낫겠다 싶어서 서브쿼리 안쓰고 풀었다 ... 이제 설명할 것도 없는 거 같은데 SELECT CAR_ID인데 겹치지 않게(DISTINCT) FROM 테이블 두개 CAR_ID로 조인 WHERE CAR_TYPE = '세단' and 대여시작이 10월인 거 (LIKE '2022-10%') → 이미 DATE라서 형변환은 안함 ORDER BY CAR_ID대로 내림차순 SELECT DISTINCT CAR_RENTAL_COMPANY_CAR.CAR_ID FROM CAR_RENTAL_COMPANY_CAR JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY ON CAR_RENTAL_COM..

코딩테스트 2023.11.09

[프로그래머스] [Python] 머쓱이보다 키 큰 사람

오늘도 파이썬 조금씩 발전 중이다 내가 경험한 바 매일 조금씩 하는거보다 무서운 게 없다 오늘도 파이팅! 흐흐... 조금 복잡하게 풀긴 했지만 보고 바로 넘어갔을 때에 비하면 장족의 발전 ! 이건 좀 부끄러운데 return 자리를 제대로 못잡아서 조금 헤맸다 그래도 해결했다!! def solution(array, height): up = [] for i in array: if height < i: up.append(i) return len(up) 다른 사람의 풀이 신기한데 댓글에 시간 복잡도가 안좋다고 for 문: O(n), sort: O(nlogn) 시간복잡도는 더 안좋음 def solution(array, height): array.append(height) array.sort(reverse=True..

코딩테스트 2023.11.07

[프로그래머스] [Python] 두 정수 사이의 합

오늘도 파이썬 나는 발전 중이다 3번 복창하면서 시작 sum(range()) 되는지 안되는지는 모르지만 일단 고 return 을 안넣어서 결과가 출력이 안되는 불상사가 잠시 있었다(머쓱) 그래도 생각 좀 정리하고 하니까 금방 풀렸다 하지만 항상 더 좋은 코드가 있지 def solution(a, b): if a > b: return sum(range(b,a+1)) elif b > a: return sum(range(a,b+1)) else: return a 다른 사람의 풀이 a, b = b, a !! 완전 기억 속에서 없어져있던 걸 쓰셨다 근데 댓글에 a,b가 같은 숫자일 경우도 같이 처리 해주셨으면 다른 케이스에서도 속도가 올라갔을거예요~! 이런말이 있어서 이것도 유의해야겠다 싶었다 def adder(a,..

코딩테스트 2023.11.06

[프로그래머스] [Python] 핸드폰 번호 가리기

오늘도 파이썬 ㅎㅎ 마지막 4개는 그냥 노출하면 되는데 앞부분을 도대체 어떻게 해결해야하는지 감이 안와서 구글링 ㅎㅎ 그랬더니 정규식이 나왔다 오 기발한데 하면서 적용해서 풀었다 import re def solution(pn): st = re.sub('[0-9]', '*', pn[:-4]) return st+pn[-4:] 다른 사람의 풀이 하지만 정규식도 복잡하게 푼거였다 그냥 마지막 4자리를 뺀 문자열 갯수만큼 *로 곱하면 된다! 멋있다 그냥 ㅋㅋㅋㅋㅋ def hide_numbers(s): return "*"*(len(s)-4)+s[-4:] 출처 : 프로그래머스

코딩테스트 2023.11.03

[프로그래머스] [Python] 정수 내림차순으로 배치하기

오늘도 파이썬 전에 풀었던게 있어서 int -> list까지는 괜찮았는데 거기서 다시 int로 바꾸는게 역경이었다 ㅁㄹ이가 도와줘서 같이 뚝딱뚝딱 오늘의 배운점 : sort(reverse=True) 이런 옵션이 있는 것도 모르고 [::-1]쓰고 있었다;; list에서 int로 바꿀 때는 join쓰기 def solution(n): a = list(map(int, str(n))) a.sort(reverse=True) result = ''.join(map(str, a)) return int(result) 다른 사람의 풀이 훨씬 간단하다 def solution(n): ls = list(str(n)) ls.sort(reverse = True) return int("".join(ls)) 이건 한줄 풀이 경이롭다 d..

코딩테스트 2023.11.02

[프로그래머스] [Python] 짝수의 합

골프존 떨어졌으니 다시 열심히 해야지..ㅎ 아직 못 풀고 있던 것 중에 제일 쉬운 거 중간에 뻘짓해서 안풀리긴 했는데 다른 블로그 참고해가며 풀어봤다 def solution(n): return sum([i for i in range(n+1) if i%2 == 0]) 다른 사람의 풀이 if문 안 걸고 2개씩 점프한다 def solution(n): return sum([i for i in range(2, n + 1, 2)]) 골프존 떨어져서 길게쓰면 구구절절 될 거 같아 오늘은 짧게 끝 ! 출처 : 프로그래머스 참고 블로그 : [Python의 꽃] 리스트 컴프리헨션(List Comprehension) [Python의 꽃] 리스트 컴프리헨션(List Comprehension) 안녕하세요 이번엔 파이썬에서 간결..

코딩테스트 2023.11.01

[프로그래머스] [Python] 자릿수 더하기

오늘은 파이썬 짱구 굴리다가 구글링했다 map으로 해결하는 방법이 나와서 적용했다 map 잘 쓰기 힘들다 def solution(n): li = list(map(int,str(n))) return sum(li) 다른 사람의 풀이 이렇게 한번에 return할 수 있는 방법도 있는데 중간에 print가 들어가있어서 이생각을 못했다 def sum_digit(number): return sum(map(int, str(number))) 좀 더 이런 방식으로 풀고 싶었다 int → str로 바꾸고 거기서 하나씩 뽑아내는 방법 def sum_digit(number): return sum([int(i) for i in str(number)]) 출처 : 프로그래머스

코딩테스트 2023.10.26

[프로그래머스] [SQL] 없어진 기록 찾기

거의 일주일만에 돌아온 코테 SQL 집중 기간이라 SQL로 돌아옴 나간 기록은 있는데 들어온 기록이 없다 => outs에 ins를 붙여야겠다는 생각이 먼저 들었다 left join을 썼다 => outs에 있고 ins에 없는걸 null로 합쳐질 수 있도록! 그리고 is null인걸로 걸러내기 완성 SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME FROM ANIMAL_OUTS LEFT JOIN ANIMAL_INS ON ANIMAL_OUTS.ANIMAL_ID = ANIMAL_INS.ANIMAL_ID WHERE ANIMAL_INS.ANIMAL_ID is null; 당연히 join으로 하면 두 테이블 모두에서 있는 것만 합쳐지기 때문에 성립되지 않는다 그렇다면 right joi..

코딩테스트 2023.10.24

[프로그래머스] [Python] 수 조작하기 1

다시 파이썬 레~~쓰고 뭔가 COS Pro 시험 보고 나니 각성한 거 같다 남이 푼 코드를 많이 보라고 하는 건 이런 이유인가 처음 푼 거 헤헤 잘풀었다하고 돌리니 결과랑 다르게 나와서 결과 볼려고 print문 돌렸다 def solution(n, control): for i in range(len(control)): if 'w' in control[i]: n =+ 1 elif 's' in control[i]: n =-1 elif 'd' in control[i]: n =+ 10 else: n =- 10 return n print문 보니 n에서 왔다갔다 하고 있어서 문제에서 원하는 결과랑 내가 출력한 결과랑 다른 거였음 def solution(n, control): for i in range(len(cont..

코딩테스트 2023.10.17