728x90
[파이썬] 프로그래머스 Lv0. 문자열 밀기, 두 수의 차,두 수의 곱, 몫 구하기
안녕하세요 머킹입니다!
알고리즘 공부에 대한 생각이 많아지는 요즘인데요.
DO it 알고리즘이라는 책을 보면서 공부하는 게 좋지 않을까 생각하고 있습니다.
제 목표는 일단 1단계 문제를 풀면서 병행하는 것인데
포트폴리오를 빠르게 끝내고 해 봐야겠어요
문자열 밀기
def solution(A, B):
if len(A) != len(B):
return -1
for i in range(len(A)):
if A[-i:] + A[:-i] == B:
return i
return -1
이걸 되게 열심히 풀고 넘어갔는데
정말 엄청난 풀이를 봤습니다..
solution=lambda a,b:(b*2).find(a)
정말... 엄청나죠..?
이것에 대해서 설명을 부탁하니 이렇게 답변이 돌아왔습니다.
- solution=lambda a, b:(b*2). find(a) 코드:
- 이 코드는 문자열 B를 두 번 이어 붙인 후((b*2)) 그 안에서 문자열 A를 찾아서 위치를 반환합니다(. find(a)). 만약 찾는 문자열이 없으면 -1을 반환합니다.
- def solution(A, B):... 코드:
- 이 코드는 문자열 A를 오른쪽으로 한 칸씩 밀어서 문자열 B가 될 수 있는지 확인하고, 가능하다면 밀어진 횟수를 반환합니다. 불가능하면 -1을 반환합니다.
두 코드가 동일한 동작을 수행하는 이유는 문자열을 두 번 이어 붙이는 것과 문자열을 오른쪽으로 한 칸씩 밀어보는 것이 서로 등가성을 가지기 때문입니다. 문자열을 두 번 이어 붙이면, 그 안에서 원래의 문자열을 원하는 만큼 오른쪽으로 이동시킨 효과가 나타납니다.
두 수의 차
def solution(num1, num2):
return num1 - num2
정말 쉽죠?
solution = lambda num1, num2 : num1 - num2
고수는 쉬운 문제도 고수네요
두 수의 곱
solution = lambda num1, num2 : num1 * num2
저도 이렇게 풀었습니다 ㅎㅎ
몫 구하기
solution = lambda num1, num2 : num1 // num2
solution = int.__floordiv__
이런 풀이도 있던데 뭘까요?
int.__floordiv__는 파이썬에서 정수형 (int)에 대해 정의된 특별한 메서드 중 하나입니다.
이 메서드는 floor division 연산을 구현합니다.
Floor Division (버림 나눗셈): 나눗셈의 결과에서 소수 부분을 버리고 정수 부분만을 얻는 연산을 말합니다.
예를 들어, a.__floordiv__(b)는 a // b와 동일합니다. 여기서 // 연산자는 floor division을 수행합니다.
오랜만에 코테 많이 푸니까 좋네요!
다들 추우니까 따뜻하게 입으세요
'오늘부터 코딩테스트' 카테고리의 다른 글
[오늘부터 코딩테스트]파이썬으로 프로그래머스 코딩 입문 프로그램 풀기 (0) | 2023.12.04 |
---|---|
[오늘부터 코딩테스트]파이썬으로 프로그래머스 코딩 입문 프로그램 풀기 (0) | 2023.11.30 |
[오늘부터 코딩테스트]파이썬으로 프로그래머스 코딩 입문 프로그램 풀기 (0) | 2023.11.28 |
[오늘부터 코딩테스트]파이썬으로 프로그래머스 코딩 입문 프로그램 풀기 (0) | 2023.11.27 |
[오늘부터 코딩테스트]파이썬으로 프로그래머스 코딩 입문 프로그램 풀기 (0) | 2023.11.24 |