python | for ~ else 구문 사용하기
·
TIL/python
소수 찾기 문제를 해결하면서 for문을 탈출하기 위한 방법을 찾다가 파이썬에만 존재하는 for ~ else 구문을 알게 되어 정리해보려 한다. 아래 코드는 i가 소수인지 아닌지 판별하는 코드임을 3줄만 읽어도 모두가 알 것이다. for 문을 돌면서, i가 소수가 아닐 때도 어떤 action을 하고 싶어서 if ~ else 구문을 작성해 주었다. for i in range(2, 11): for j in range(2, i): if i % j == 0: print(f'{i}는 소수 아님') break else: print(f'{i}는 소수') break 하지만 이 코드는 우리가 원하는 대로 결과를 출력하지 않는다. 우리는 i가 소수이면 'i는 소수'를, 소수가 아니면 'i는 소수 아님'을 출력하길 원한다. ..
프로그래머스 | 소수 찾기 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 import math def isPrime(n): if n==1: # 1은 약수가 아니므로 제외 return False else: for i in range(2,int(math.sqrt(n))+1): # n의 제곱근까지 약수가 존재하는지 확인 if n%i==0: # 약수가 존재하면 False return False return True # 존재하지 않으면 True def solution(n): answer = 0 for i in range(1, n+1): if isPrime(i): answer += 1 ..
프로그래머스 | 폰켓몬 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(nums): answer = len(set(nums)) if answer > len(nums)/2: return len(nums)/2 return answer n마리의 폰켓몬이 주어지면 n/2마리의 폰켓몬을 고르되, 가장 많은 종류의 폰켓몬을 골라야 한다. nums = [3,1,2,3]이면, 4 / 2 = 2마리의 폰켓몬을 골라야 한다. 이때, 1번, 2번 또는 2번, 3번 또는 1번, 3번을 골라야 nums에서 2마리를 고를 수 있는 가장 많은 종류인 2종류의 폰켓몬을 고를 수 ..
프로그래머스 | 가장 가까운 같은 글자 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(s): answer = [] for i in range(len(s)): if s[i] in s[0:i]: answer.append(i - s[0:i].rindex(s[i])) else: answer.append(-1) return answer s='banana'일 때, s의 각 위치보다 앞에 있으면서 가장 가까운 곳에 있는 같은 문자와의 거리를 찾는 문제이다. 'banana'의 경우 다음과 같다. 1) b는 첫 번째 문자이고 앞에 같은 문자열이 없으므로, -1 2) a 앞의 문자열..
프로그래머스 | 푸드 파이트 대회 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명은 생략하고 코드에 대한 설명만 남깁니다. 코드 def solution(food): temp = '' # 왼쪽 선수 음식 for i in range(1, len(food)): temp += str(i) * (food[i]//2) return temp + '0' + temp[::-1] 문제가 너무 길어 당황스러울 수 있지만, 어떻게 하면 food에 주어진 값을 양쪽에 대칭으로 배치할 수 있을지 고민해 보면 어렵지 않게 해결할 수 있다. 처음부터 코드를 작성하기보단, 문제를 이해하기 위해 먼저 메모장에 ..
프로그래머스 | 콜라 문제 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(a, b, n): answer = 0 # 받은 병의 개수 while n >= a: answer += (n // a) * b n = (n // a) * b + (n % a) return answer a개의 병을 가져다주면 b개의 병으로 바꿔준다. n개의 병을 가지고 있을 때, 총 몇 개의 병을 받을 수 있는지 구하는 문제이다. 문제에서 주어진 예시(a=2, b=1, n=20)를 가지고 설명하자면 다음과 같다. a=2, b=1 이므로, 2개를 가져다주면 1개로 바꿔준다. 20개(=n)..