[Programmers] 문자열을 정수로 바꾸기 / 시저 암호 / 내적 / 약수의 합 (python)

yourmean·2021년 2월 6일
0

Algorithm - Programmers

목록 보기
6/13
post-thumbnail

🌴 문자열을 정수로 바꾸기

문제 링크

해결 전략

s : 길이가 1 이상 5이하인 문자열, 맨앞에는 부호(+, -)가 올 수 있으며, 부호와 숫자로만 이루어져 있고, 0으로 시작하지 않습니다.

  1. 그냥 int로 return

Source Code

def solution(s):
    return int(s)

이런 문제가 왜 있는거지 ..?ㅎ



🌴 시저 암호

문제 링크

해결 전략

s : 길이가 8000이하인 string, 알파벳 대/소문자&공백으로 구성
n : 1이상 25이하의 자연수
문자열 s를 n만큼 민 암호문을 만드는 함수를 구현하되, 공백은 그대로 유지해야 한다.

1.공백 반영을 위해 s를 list로 변환
2. 대/소문자,공백을 따로 처리하기 위해
2-1. 알파벳 대문자를 담고 있는 문자열 big 생성
2-2. 알파벳 소문자를 담고 있는 문자열 small 생성
3. for문을 돌면서 다음 조건에 맞춰 시저 암호문 만들기
3-1. 알파벳 대문자: big에서 해당 알파벳을 찾은 후 n만큼 밀기. 이 때, %26을 통해 문자열을 벗어나지 않도록 처리
3-2. 공백: 유지 (pass)
4. 원소들을 join하여 return


Source Code

def solution(s, n):

    s=list(s)
    big='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    small='abcdefghijklmnopqrstuvwxyz'
    
    for i in range(len(s)):
        if s[i] in big:
            s[i]= big[(big.index(s[i])+n)%26]
        elif s[i] in small:
            s[i]= small[(small.index(s[i])+n)%26]
        else:
            pass
    
    return ''.join(s)

생각보다 시간 많이 썼던 문제 ㅠㅠ
처음에 islower, isupper로 구현하려 했으나 어떤 이유에선지 잘 되지 않아서 big, small로 바꿨다
다음에 다시 도전해봐야지 🙋🏻‍♀️



🌴 내적

문제 링크

해결 전략

a, b : 두 일차원 정수 배열

  1. a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 이므로
  2. 동일 index끼리 맞춰 곱한 후 sum

Source Code

def solution(a, b):
    answer=sum(x*y for x,y, in zip(a,b))
    return answer

🌴 약수의 합

문제 링크

해결 전략

n : 0이상 3000이하의 정수

  1. n이 i로 나누어떨어지는 경우 약수이므로 answer에 더해주고 최종값을 return

Source Code

def solution(n):
    answer= 0
    for i in range(1,n+1):
        answer+=i if int(n)%i==0 else 0
    return answer

넘 간단해서 뭘 설명해야할지 모르겠다 ,,,,

profile
𝐼 𝑒𝑖𝑡ℎ𝑒𝑟 𝑤𝑖𝑛 𝑜𝑟 𝑙𝑒𝑎𝑟𝑛 💪🏻

0개의 댓글