[프로그래머스] 09/05 (12)

2021. 9. 5. 13:51·코딩테스트/프로그래머스[Python]

[핸드폰 번호 가리기]

My answer

def solution(phone_number):
    answer = ''
    tmp=phone_number[0:-4]
    len1=len(tmp)
    answer='*'*len1
    answer=answer+phone_number[-4:]
    return answer

Another answer

def solution(phone_number):
    return "*"*(len(phone_number)-4) + phone_number[-4:]

[하샤드 수]

My answer

def solution(x):
    answer = True
    x2=x
    sum=0
    while(x>=10):
        sum=sum+x%10
        x=x//10
    sum=sum+x
    if(x2%sum!=0):
        answer=False
    return answer


Another answer

def solution(x):
    return x % sum([int(c) for c in str(x)]) == 0

[평균 구하기]

My answer

def solution(arr):
    answer = 0
    sum = 0
    for i in range(0,len(arr)):
        sum=sum+arr[i]
    answer= sum / len(arr)
    return answer

Another answer

def solution(arr):
     return (sum(arr) / len(arr))
   ----------------------------
import statistics
def solution(arr):
     return statistics.mean(arr)

[콜라츠 추측]

My answer

def solution(num):
    answer = 0
    while(num!=1):
        if(answer>=500):
            answer=-1
            break
        else:
            if(num%2==0):
                num=num//2
            else:
                num=num*3+1
        answer+=1
    return answer

[최대공약수와 최소공배수]

My answer

def solution(n, m):
    answer = []
    max_n,min_n=max(n,m),min(n,m)
    # 최대공약수
    while(1):
        r = max_n % min_n
        if(r==0):
            break
        else:
            max_n=min_n
            min_n=r
    #최소공배수
    answer=(min_n,n*m//min_n)
    return answer
더보기

유클리드 호제법

유클리드 알고리즘(Euclidean algorithm)은 2개의 자연수의 최대공약수를 구하는 알고리즘입니다. 비교대상의 두 개의 자연수 a와 b에서(단 a>b) a를 b로 나눈 나머지를 r이라고 했을때 GCD(a, b) = GCD(b, r)과 같고 "r이 0이면 그때 b가 최대공약수이다."라는 원리를  활용한 알고리즘입니다. ex) GCD(24,16) -> GCD(16,8) -> GCD(8,0) : 최대공약수 = 8

+ 최소공배수는 a*b의 값을 최대공약수로 나눈 수가 된다.

[짝수와 홀수]

My answer

def solution(num):
    answer = ''
    if num%2==0:
        answer="Even"
    else:
        answer="Odd"
    return answer

Another answer

def solution(num):
    answer = ''
    return "Even" if num%2 == 0 else "Odd"

[제일 작은 수 제거하기]

My answer

def solution(arr):
    answer = []
    arr.remove(min(arr))
    if(arr==[]):
        arr=[-1]
    answer+=arr
    return answer

[정수 제곱근 판별]

My answer

def solution(n):
    answer = 0
    for i in range(1,n+1):
        if(n==i*i): # n/i==/는 n과i가 정수여야 한다는 조건을 판별할 수 없어서 안됨
            answer=(i+1)*(i+1)
            break
    if(answer==0):
        answer-=1
    return answer

Another answer

def solution(n):
	# 1/2제곱은 제곱근이다 
    sqrt = n ** (1/2)
    if sqrt % 1 == 0:
        return (sqrt + 1) ** 2
    return -1

[정수 내림차순으로 배열하기]

My answer

def solution(n):
    answer = 0
    # tmp=[c for c in str(n)] 아래줄 코드와 똑같은 코드 
    tmp=list(str(n))
    tmp.sort(reverse=True)
    answer=int("".join(tmp))
    return answer

[자연수 뒤집어 배열로 만들기]

My answer

 def solution(n):
    answer = []
    answer+=[int(str(n)[i]) for i in range(len(str(n))-1,-1,-1)]
    return answer
---------------------------------------------
 def solution(n):
     answer = []
     a = list(str(n))
     a.reverse()
     a = list(map(lambda x:int(x),a))
     return a
---------------------------------------------
 def solution(n):
    answer = []
    answer += list(int(c) for c in str(n))
    answer.reverse()
    return answer

Another answer

def solution(n):
    return list(map(int, reversed(str(n))))

[자릿수 더하기]

My answer

def solution(n):
    answer = 0
    while(n>=10):
        answer+=n%10
        n=n//10
    answer+=n
    return answer

Another answer

def solution(n):
    return sum([int(i) for i in str(n)])

[이상한 문자 만들기]

My answer

def solution(s):
    answer = ''
    tmp=[]
    
    tmp=s.split(" ")
    for i in tmp:
        for j in range(len(i)):
            if(j%2==0):
                i=i[:j]+i[j].upper()+i[j+1:]
            else:   
                i=i[:j]+i[j].lower()+i[j+1:]
        answer+=i+" "
    return answer[:-1]

Another answer

def solution(s):
    return ' '.join([''.join([c.upper() if i % 2 == 0 else c.lower() for i, c in enumerate(w)]) for w in s.split(" ")])
728x90

'코딩테스트 > 프로그래머스[Python]' 카테고리의 다른 글

[프로그래머스] 09/13 (3)  (0) 2021.09.13
[프로그래머스] 09/09 (3)  (0) 2021.09.09
[프로그래머스] 09/08 (6)  (0) 2021.09.08
[프로그래머스] 09/06 (2)  (0) 2021.09.06
[프로그래머스] 09/03 (3)  (0) 2021.09.03
'코딩테스트/프로그래머스[Python]' 카테고리의 다른 글
  • [프로그래머스] 09/09 (3)
  • [프로그래머스] 09/08 (6)
  • [프로그래머스] 09/06 (2)
  • [프로그래머스] 09/03 (3)
창빵맨
창빵맨
  • 창빵맨
    Let's be Developers
    창빵맨
    로그인/로그아웃
  • 전체
    오늘
    어제
    • 분류 전체보기 (471)
      • 알쓸신잡 (79)
      • ML & DL (85)
        • Computer v.. (22)
        • NLP (22)
        • 파이썬 머신러닝 완.. (3)
        • 개념정리 (38)
      • 리눅스 (21)
      • 프로젝트 (29)
        • 산불 발생 예측 (6)
        • 음성비서 (12)
        • pdf 병합 프로그.. (0)
        • 수위 예측 (5)
        • 가짜 뉴스 분류 (5)
        • 전력사용량 예측 (1)
      • 코딩테스트 (217)
        • 프로그래머스[Pyt.. (17)
        • 프로그래머스[Fai.. (3)
        • 백준[Python] (160)
        • 이것이취업을위한코딩.. (18)
        • 파이썬 알고리즘 (19)
      • 데이터분석실습 (25)
        • 데이터 과학 기반의.. (18)
        • 헬로 데이터 과학 (7)
      • 메모장 (0)
      • 잡담 (4)
  • Personal

    GITHUB
    Instagram
  • 공지사항

  • 인기 글

  • 태그

    DFS
    파이썬
    백준
    이코테
    dp
    BFS
    이것이취업을위한코딩테스트다
    그리디
    나동빈
    이분탐색
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3

HOME

HOME

상단으로

티스토리툴바