본문 바로가기
  • 머킹이의 머신로그
오늘부터 코딩테스트

[오늘부터 코딩테스트]파이썬으로 프로그래머스 코딩 입문 프로그램 풀기

by 머킹 2023. 11. 29.
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)

 

정말... 엄청나죠..?

 

이것에 대해서 설명을 부탁하니 이렇게 답변이 돌아왔습니다.

  1. solution=lambda a, b:(b*2). find(a) 코드:
  2. 이 코드는 문자열 B를 두 번 이어 붙인 후((b*2)) 그 안에서 문자열 A를 찾아서 위치를 반환합니다(. find(a)). 만약 찾는 문자열이 없으면 -1을 반환합니다.
  3. def solution(A, B):... 코드:
  4. 이 코드는 문자열 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을 수행합니다.

 


 

오랜만에 코테 많이 푸니까 좋네요!

다들 추우니까 따뜻하게 입으세요