본문 바로가기

Code27

python | numpy 라이브러리를 이용하여 최대공약수, 최소공배수 구하기 (gcd, lcm) 코딩테스트 문제를 해결할 때면 2개 이상의 정수의 최대공약수 또는 최소공배수를 구해야 하는 경우가 종종 있습니다. 파이썬에서 최대공약수와 최소공배수는 넘파이 라이브러리를 이용해서 아주 간단하게 구해낼 수 있는데요. 먼저 함수를 소개해 드리기 전에, 최대공약수와 최소공배수를 영어로 뭐라고 부르는지 알고 넘어갈게요. gcd : greatest common division (최대공약수) lcm : lowest common multiple (최소공배수) 이런 간단한 영어 정도는 숙지해 두시면 좀더 직관적으로 쉽게 프로그래밍하실 수 있어요 :-) [1] 최대공약수 구하기 import numpy as np 먼저 넘파이 라이브러리를 임포트해줍니다. np.gcd(12, 20) # 4 np.gcd(30, 45) # 15.. 2024. 4. 8.
python | 연속 공백 여러개 분리하기, split 함수 대신 정규식(re) 활용하기! 문자열을 분리하고 변형해야 하는 코딩 테스트 문제에서 공백 문자가 연속으로 나오는 경우가 많이 있습니다. 공백을 기준으로 문자열을 분리할 때 자연스럽게 split() 함수를 사용하게 되는데, 이 경우 연속 공백을 상실하게 되는 문제점이 발생합니다. 연속 공백을 유지하면서 문자열을 분리하여 리스트로 만들기 위해 정규식(regular expression)을 사용할 수 있습니다. https://school.programmers.co.kr/learn/courses/30/lessons/12951# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 프로그래머스 Jade.. 2024. 4. 8.
MySQL | 비트 연산하기 &, NOT - 프로그래머스 코딩테스트 1단계 "특정 형질을 가지는 대장균 찾기" 문제풀이 프로그래머스에 비트 연산을 해야하는 MySQL문제가 종종 보이는데요. 정리해놓으면 좋을 것 같아서 문제 풀이를 한번 작성해 보겠습니다. https://school.programmers.co.kr/learn/courses/30/lessons/301646 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 : 2번 형질을 보유하지 않으면서 1번이나 3번 형질을 보유하고 있는 대장균 개체의 수(COUNT)를 출력하는 SQL 문을 작성해주세요. 1번과 3번 형질을 모두 보유하고 있는 경우도 1번이나 3번 형질을 보유하고 있는 경우에 포함합니다. [1] 2진법으로.. 2024. 4. 8.
MySQL | JOIN을 이용하여 차집합 구하기 - 프로그래머스 코딩테스트 3단계 "오랜 기간 보호한 동물(1)" 풀이 MySQL에서 JOIN을 이용하여 두 테이블 간의 정보를 조회할 때, 차집합(Set Difference)을 구해야 할 경우가 있습니다. 이럴 때 LEFT JOIN,RIGHT JOIN에 WHERE구문을 추가 활용하여 쉽게 표현해볼 수 있습니다. https://school.programmers.co.kr/learn/courses/30/lessons/59044 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 관련 문제로 프로그래머스 MySQL 코딩테스트 3단계 문제 오랜 기간 보호한 동물(1) 풀이를 함께 첨부해 보겠습니다. 문제 상황 : 아직 입양을 못 간 동.. 2024. 4. 8.
MySQL | 랭킹, 순위 매기기 함수 - RANK() / DENSE_RANK() / ROW_NUMBER() / NTILE() 특정 열의 값에 대해 순위를(랭킹을) 매기기 위해서 다음과 같은 함수를 사용해볼 수 있습니다. RANK DENSE_RANK ROW_NUMBER NTILE 기본적인 함수 형식은 아래과 같습니다. RANK() OVER ( [PARTITION BY colName1] ORDER BY colName2 [DESC] ) DENSE_RANK() OVER ( [PARTITION BY colName1] ORDER BY colName2 [DESC] ) ROW_NUMBER() OVER ( [PARTITION BY colName1] ORDER BY colName2 [DESC] ) NTILE() OVER ( [PARTITION BY colName1] ORDER BY colName2 [DESC] ) # [대괄호] 안의 값은 선택.. 2024. 4. 5.
MySQL | RIGHT JOIN, 서브쿼리 함께 사용하여 문제풀기 - 프로그래머스 코딩테스트 2단계 "업그레이드 된 아이템 구하기" 어느 한 게임에서 사용되는 아이템들은 업그레이드가 가능합니다. 'ITEM_A'->'ITEM_B'와 같이 업그레이드가 가능할 때 'ITEM_A'를 'ITEM_B' 의 PARENT 아이템, PARENT 아이템이 없는 아이템을 ROOT 아이템이라고 합니다. (중략).... 아이템의 희귀도가 'RARE'인 아이템들의 모든 다음 업그레이드 아이템의 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME), 아이템의 희귀도(RARITY)를 출력하는 SQL 문을 작성해 주세요. 이때 결과는 아이템 ID를 기준으로 내림차순 정렬해 주세요. 처음에 대충 생각하고 접근했더니 원하는 정답을 얻어내기 어려웠던 문제입니다! 다시 정신을 집중하고, RIGHT 조인과 서브쿼리를 이용해서 문제를 바로 해결했어요. 제가 풀이한 방.. 2024. 4. 5.