전처리/PYTHON(35)
-
알쿼리즘: 완전제곱수를 이용한 약수의 개수 판별
01 수박 반복하는 방법의 차이def solution(n): return ''.join(['수' if i%2!=0 else '박' for i in range(1, n+1)])def solution(n): return ('수박' * n)[:n]- 전자는 글자의 위치가 짝수인지 홀수인지에 따라 '수'와 '박'을 구분하고 join()으로 붙여준다.- 후자는 주어지는 수만큼 반복시키고 문자열 슬라이딩을 통해 간단하게 출력시켰다. 02 약수를 구하는 공식의 차이def solution(left, right): result=[] for i in range(left,right+1): num=[e for e in range(1,i+1) if i%e==0] if len(num..
2024.07.15 -
알쿼리즘: 파이썬 코드훈련 28, 29, 30번
01 없는 숫자 더하기def solution(numbers): answer=[0,1,2,3,4,5,6,7,8,9] for i in numbers: answer.remove(i) return sum(answer)↓def solution(numbers): return 45 - sum(numbers)💡모든 수를 더해서 주어진 수의 합계를 빼는 방법을 배웠다.더보기def solution(numbers): # 결과담을 answer를 0으로 초기화 answer = 0 # 1부터 9까지의 숫자가 있는지 없는지만 확인 # 만약에 없으면 그 숫자를 answer 누적해서 더하기 for i in range(1,10): if i not in n..
2024.07.09 -
알쿼리즘: 파이썬 코드훈련 25, 26, 27번
01 나누어 떨어지는 숫자 배열def solution(arr, divisor): answer = sorted([x for x in arr if x%divisor == 0]) if len(answer) == 0: return [-1] else: return answer 02 음양 더하기def solution(absolutes, signs): return sum([absolutes[i] if signs[i] == True else -absolutes[i] for i in range(len(absolutes))])1. 삼항 연산자를 사용할 경우 if else문이 for문보다 뒤에 올 수 없다.2. zip함수를 사용하면 한 번에 두 변수를 받을 수 있어서 간단하다...
2024.07.05 -
알쿼리즘: 파이썬 코드훈련 22, 23, 24번
01 두 정수 사이의 합 (07.02)나의 로직: 크기 순 정렬 → 사이의 모든 정수를 리스트화 → 집계함수 SUMdef solution(a, b): a1 = sorted([a,b])[0] b1 = sorted([a,b])[1] return sum(list(range(a1, b1+1)))멘토님 코드: 부등호로 순서를 정함 → range로 범위지정 → 반복하며 집계한다.def solution(a, b): # a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수: range answer = 0 #a가 더 크다면 일반적인 range함수로는 적용 안됨 #min-max 함수를 쓰는게 더 깔끔 if a > b: c = b d = a e..
2024.07.02 -
알쿼리즘: 파이썬 코드훈련 19, 20, 21번
01 정수의 제곱근 판별나의 코드: 비모듈, 바로 떠올릴 수 있던 로직이나 숫자가 커질수록 비효율적이다.def solution(n): for i in range(1, n+1): if i**2 == n: return (i+1)**2 return -1멘토님 코드: 정수를 판별하는 if문으로 2가지 경우의 수를 사용할 수 있다.import mathdef solution(n): # 어떤 숫자가 주어졌을 때 제곱근이 없다는게 대부분의 경우 # 따라서 기본 정답을 -1 로 정하고 시작하는것. answer = -1 n_sqrt = math.sqrt(n) # 만약 제곱근 쓴 숫자가 정수라면 정답 if n_sqrt.is_intege..
2024.07.01 -
문자열을 거꾸로 만드는 슬라이드 표기법
01 정답 코드def solution(n): result = [] while True: if n == 0: break answer = divmod(n, 10) n = answer[0] result.append(answer[1]) return resultdef solution(n): return list(map(int, (str(n)[::-1])))전자의 코드는 기존에 풀었던 방법이다. divmod로 몫과 나머지를 구했고, 10으로 나누면서 계속 업데이트 하는 방법이다. 이번에는 다른 방법으로도 풀어 봤다. 처음에는 sorted를 사용해서 틀렸다. 조금 더 긴 예시를 추가해보니 내가 왜 틀렸는지가 보였다. 02 문제..
2024.06.24 -
제너레이터 표현식과 next함수의 활용
01 파이썬 코드 훈련 문제13번 코딩테스트 연습 - 자릿수 더하기 | 프로그래머스 스쿨14번 코딩테스트 연습 - 약수의 합 | 프로그래머스 스쿨15번 코딩테스트 연습 - 나머지가 1이 되는 수 찾기 | 프로그래머스 스쿨 02 사용한 코드13번 문제: sum([int(i) for i in list(str(N))])14번 문제: sum([i for i in range(1,num+1) if num%i==0])15번 문제: next(i for i in range(1,num+1) if num%i==1) 03 인사이트1. 리스트컴프리헨션 내에서 if 조건문 사용 방법- 리스트 내에서 for 반복문 다음으로 if 조건문을 추가하는 순서로 작성한다. 2. lambda 함수의 효율적인 사용 방법: 익명의 함수 정의1...
2024.06.21 -
정규 표현식: 보다 간단하게 개인 정보를 보호하자
data = """홍길동의 주민번호는 800905-1049118 입니다. 그리고 고길동의 주민번호는 700905-1059119 입니다.그렇다면 누가 형님일까요?""" 위와 같은 데이터가 주어졌다. 정보보호를 위해 뒤에 해당하는 번호를 *표로 가리고 싶다. result = []for line in data.split("\n"): word_result = [] for word in line.split(" "): if len(word) == 14 and word[:6].isdigit() and word[7:].isdigit(): word = word[:6] + "-" + "*******" word_result.append(word) result.ap..
2024.06.20 -
경우의 수 구하기: itertools모듈과 제너레이터 표현식
01 문제 제시 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 02 코드 풀이import itertoolsdef solution(number): tmp = list(itertools.combinations(number,3)) num=0 for i in tmp: if sum(i) == 0: num+=1 return numitertools 모듈의 combinations 함수를 쓰면 간단하게 되는데, 쓰지 않는다고 하면 반복문을 이용해 튜플을 만들어주고 중복되는지 체크해야 할 것 같다. (아래에 코드 추가) n..
2024.06.19 -
알쿼리즘 스터디: 스택/큐 문제 내는 날
01 문제 공유 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 02 코드 공유 맟 풀이 방법def solution(progresses, speeds): listup=[] result=[] answer=[] num=1 right=[] for a in range(len(progresses)): listup.append(np.ceil((100-progresses[a])/speeds[a])) for i in listup: if result==[]: result.append(i) ..
2024.05.29