코딩테스트/programmers (python)

python/ Lv.1 약수의 개수와 덧셈, 이상한 문자 만들기, 나누어 떨어지는 숫자 배열, 실패율

seulll 2023. 2. 9. 00:05

코딩테스트 연습 - 약수의 개수와 덧셈 | 프로그래머스 스쿨 (programmers.co.kr)

 

내 풀이

def solution(left, right):
    result=0
    num=0
    for i in range(left, right+1):
        for j in range(1,i+1):
            if i%j==0:
                num+=1
        if num%2==1:
            result-=i
        else:
            result+=i 
    return result

풀이 

def solution(left, right):
    result=0
    for i in range(left, right+1):
        num=0
        for j in range(1,i+1):
            if i%j==0:
                num+=1
        if num%2==1:
            result-=i
        else:
            result+=i 
    return result

num 위치만 바꿨는데 정답..? 계속 고쳤는데 뭥미

i 값이 바뀔 때마다 num이 0으로 초기화 되어야 해서 그런가 봄

 

풀이2

def solution(left, right):
    answer = 0
    for i in range(left,right+1):
        if int(i**0.5)==i**0.5:
            answer -= i
        else:
            answer += i
    return answer

제곱수는 약수의 개수가 홀수라는 점을 이용한 풀이


코딩테스트 연습 - 이상한 문자 만들기 | 프로그래머스 스쿨 (programmers.co.kr)

문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하요.

 

내 풀이 (오답)

def solution(s):
    result=''
    for i in range(0,len(s)):
        if i%2==0:
            result+=s[i].upper()
        else i%2==1:
            result+=s[i]
    return result

 

풀이

def solution(s):
    ans = ''
    for word in s.split(" "):
        for i, p in enumerate(word):
            if i % 2 == 0:
                ans += p.upper()
            else:
                ans += p.lower()
        ans += ' '
    return ans[:-1]

s='hello world'

for word in s.split(" "):

    print(word)

 

>>> hello 
       world


코딩테스트 연습 - 나누어 떨어지는 숫자 배열 | 프로그래머스 스쿨 (programmers.co.kr)

문제 설명

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를
완성해보세요.

내 풀이

def solution(arr, divisor):
    result=[]
    i for i in arr if i%divisor==0:
        result.append(i)
    if len(result)==0:
        return [-1]
    return sorted(result)

풀이

def solution(array):
    return sorted(array)[len(array) // 2]

코딩테스트 연습 - 실패율 | 프로그래머스 스쿨 (programmers.co.kr)

 

내 풀이

def solution(N, stages):
    array=[]
    result=[]
    num=set(stages)
    num_sort=sorted(num)
    for i in num_sort:
        array.append(stages.count(i))
        numm=len(stages)
    for i in array:
        result.append(i/numm)
        numm-=i
    return sorted(num,reverse=True)

풀이

def solution(N, stages):
    result = {}
    users = len(stages)
    for stage in range(1, N+1):
        if users != 0:
            count = stages.count(stage)
            result[stage] = count / users
            users -= count
        else:
            result[stage] = 0
    return sorted(result, key=lambda x : result[x], reverse=True)