프로그래머스 78

[프로그래머스] [SQL] 중성화 여부 파악하기

이젠 테이블 하나있는건 너무 고맙다 보자마자 case when 이 떠올랐다 근데 다른글자 라도 의미만 같으면 똑같이 O를 표시하는데 or로 될까 싶어서 넣어봤더니 안되네 따로 해야하는건가 찾아봐도 모르겠다 알게되면 추가해야지 SELECT ANIMAL_ID, NAME, CASE WHEN SEX_UPON_INTAKE LIKE 'Neutered%' THEN 'O' WHEN SEX_UPON_INTAKE LIKE 'Spayed%' THEN 'O' ELSE 'X' END AS '중성화' FROM ANIMAL_INS +) 된다 컬럼을 두번 적으면 되는데 난 또 한번만 적어가지고 안되는 거였음! 어떤거는 컬럼명을 한번만 적어도 되고 어떤거는 따로 적어야하는게 헷갈린다 CASE WHEN에서는 두 번 ! SELECT AN..

코딩테스트 2023.11.24

[프로그래머스] [SQL] 서울에 위치한 식당 목록 출력하기

으어어 간만에 돌아왔다 SQL만 파기로 했기 때문에 SQL SELECT 4단계다 몇번의 코테를 거치면서 ROUND는 기본 탑재됐다 SELET 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수(리뷰 평균점수는 소수점 세 번째 자리에서 반올림) FROM REST_INFO와 REST_REVIEW 테이블 WHERE 서울에 위치한 식당들 GROUP BY 식당 별 평균 점수 ORDER BY 평균점수를 기준으로 내림차순 정렬, 즐겨찾기수를 기준으로 내림차순 정렬 SELECT REST_INFO.REST_ID, REST_NAME, FOOD_TYPE, FAVORITES, ADDRESS, ROUND(avg(REVIEW_SCORE), 2) as SCORE FROM REST_INFO JOIN REST_R..

코딩테스트 2023.11.22

[프로그래머스] [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

[프로그래머스] [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