본문 바로가기

파이썬 공부/코딩 테스트 단순 코드

[프로그래머스] 같은 숫자는 싫어!, 없는 숫자 더하기, 나누어 떨어지는 숫자 배열 등 여러가지 쉬운 문제

def solution(s):
    answer = True
    if len(s) == 4 or len(s) == 6:
        for i in s:
            try:
                i=int(i) #i가 숫자로 변환할 수 없다라면 에러가 날 거임 
            except:
                return False # 문자열일테니까 바로 리턴 false 
    else :
        return False 
    
    return answer
# 해당 방식 말고 isdigit()를 사용하여 
#def solution(s):
#    return s.isdigit() and (len(s) == 4 or len(s) == 6) 
#더 간단하게도 가능하다..​
def solution(s):
    answer = ''
    check_list=[]
    for i in s:
        check_list.append(ord(i))
    check_list.sort(reverse=True)
    for j in check_list:
        answer+=chr(j)
    
    return answer


#아스키 코드 값은 orb로 해당 문자열의 숫자값을 알 수 있고 
# 다시 chr로 해당 숫자값에 대한 문자열을 알 수 있다.​
def solution(price, money, count):
    answer = -1
    hap = 0 # 총 놀이기구에 필요한 돈 
    for i in range(1 ,count+1): # 더함 
        hap += price * i
    if money > hap :
        return 0
    else : 
        answer = hap - money 
        
    return answer
def solution(left, right):
    answer = 0
    c = 0
    for i in range(left, right+1):
        for j in range(1,i+1): # 약수를 구하는 제일 쉬운 방법은 그냥 걔 전까지 모든 숫자로 나누어보는 것 
            if i%j == 0: #나누어진다면?
                c+=1
            else:
                continue
        if c%2 == 0: #약수가 짝수라면?
            answer += i
            c = 0
        else:
            answer -= i 
            c = 0
            
    return answer
def solution(s):
    answer = ''
    onaka = len(s)//2 
    if len(s)%2 == 1: #홀수라면 그냥 중앙값 출력하고 
        answer += s[onaka]
    else :
        answer += s[onaka-1:onaka+1] # 짝수면 앞뒤 2개 출력하면 되니까 이렇게 
        
    return answer​
def solution(a, b): # 내적 문제 
    answer = 0
    for i in range(len(a)): 
        answer += a[i]*b[i] #각 리스트의 길이는 같으므로 이렇게 해도 됨 
    return answer
def solution(phone_number):
    answer = ''
    gil=len(phone_number)-4 #4자리 제외함 
    for i in range(gil): # 제외한 만큼 *로 채움 
        answer+='*'
    answer+=phone_number[gil:] # 슬라이싱 
    
    return answer
def solution(arr):
    answer = []
    temp=1000000000
    if len(arr)==1: # 예외처리 
        answer.append(-1) # 길이가 1정도되는놈은 그냥 무조건 한개니까 바로 -1 리턴으로 끝내기 
        return answer
    for i in arr: #제일 작은 수 찾기 
        if i<temp: # 배열중에 temp보다 큰 경우는 없을것이므로 
            temp=i
        else:
            continue
    for k in arr: #제일 작은수가 아니라면 리스트에 넣어주기 
        if temp!=k:
            answer.append(k)
        else:
            continue
    
    return answer

꽤 긴기간동안 하드 코딩을 안해서 살짝 뇌풀기로 쉬운문제부터 접근하겠다.

 

def solution(numbers):
    #numbers는 정수 배열이고 길이는 1부터 9까지, 원소는 0부터 9까지 있으나 모든 원소는 중복되지 않음
    answer = -1
    hap=0
    for i in range(10):
        hap+=i
    #0~9까지 더한 합이 들어 있고 
    bbagi=0#정수 배열을 모두 더하고 빼고 덧셈과 뺄셈의 순서는 바뀌어도 문제가 없으므로 이렇게 함 
    for k in numbers:
        bbagi+=k
    answer=hap-bbagi

    return answer


temp는 그냥 주어진 수보다 크게 설정하여 반드시 첫바퀴때는 else 문에 해당되도록하였고 

그전 값만 저장하면 연속된 경우의 수는 처리할 수 있기 때문에 가볍게 temp=i는 이런식으로 코딩하였다.

 

def solution(arr):
    answer = []
    temp=10000000000
    for i in arr:
        if i==temp:
            temp=i
            continue
        else:
            temp=i
            answer.append(i)
            
    return answer

 

 

 

def solution(arr, divisor):
    answer = []
    c=0
    for i in arr:
        if i%divisor==0:#정수배열이 divisor로 나누어 떨어진다면? 
            c+=1 # c는 나누어지는 경우를 합함
            answer.append(i)
        else:
            continue
    answer.sort() # 오름차순 정렬 
    if c==0:# 나누어지는 경우가 한번도 없을경우? 
        answer.append(-1)  #-1을 넣어주고 끝 
    return answer