Today I Learned

(6) 프로그래머스 코딩테스트 Lv1 - 파이썬

by Holly Yoon

22.내적 (문제 링크)

  • 문제 설명 : 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
def solution(a, b):
    answer = 0
    for i in range(len(a)):
        answer += a[i]*b[i]
    return answer
  • lambda, zip() 쓰는 방법을 익혀보자
solution = lambda x, y : sum(a*b for a,b in zip(x,y))

23. 문자열 내림차순 정렬하기(문제 링크)

  • 문제 설명 : 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
#my long 풀이
def solution(s):
    result=[]
    result2=[]
    for i in range(len(s)):
        if s[i].isupper() == False:
            result.append(s[i])
        else:
            result2.append(s[i])
    return ''.join(sorted(result, reverse=True)+sorted(result2, reverse=True))
  • 이 문제를 봤을 때,, 소문자 대문자를 분리하고 각각 정렬하고 합쳐야겠다라고 생각했다.
  • sorted()라는 메소드는 ASCII value를 따르기 때문에, default order는 대문자, 소문자 먼저 정렬하고 알파벳 순을 따른다고 한다;; 쏘 간단..
ef solution(s):
    return ''.join(sorted(s, reverse=True))

안녕하세요, 제 코딩 선생님 ChatGPT이십니다..

24. 약수의 개수와 덧셈 (문제 링크)

def solution(left, right):
    result = 0
    for i in range(int(left),int(right)+1):
        if (i**0.5==int(i**0.5)):
            result -= i
        else:
            result += i
    return result
  • 내장 함수를 사용할 수도 있다.
import math

def solution(left, right):
    answer = 0
    for i in range(left, right + 1, 1):
        sqrt = math.sqrt(i)
        if int(sqrt) == sqrt:
            answer -= i
        else:
            answer += i

    return answer

25. 문자열 다루기 기본(문제 링크)

  • 문제 설명 : 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
  • 제한 사항 : s는 길이 1 이상, 길이 8 이하인 문자열입니다. s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다.
def solution(s):
    if s.isdigit()==True: #숫자로 이루어져있는 문자열은 True 반환
        if len(s) in (4,6):
            return True
        else:
            return False
    else: 
        return False
        
#true, false반환이니까 그냥 return값에 true조건을 적어도 됨        
def alpha_string46(s):
    return s.isdigit() and len(s) in (4, 6)
  • isdigit() in(4,6)을 활용해서 풀 수 있다.
def alpha_string46(s):
    try:
        int(s)
    except:
        return False
    return len(s) == 4 or len(s) == 6
  • 다른 분이 푼 것 중에 예외처리로 푼게 인상 깊었다.. 이렇게 풀고 싶었는데,, 

블로그의 정보

Study Log by Holly

Holly Yoon

활동하기