_won_
wonprogrammer
_won_
전체 방문자
오늘
어제
  • 분류 전체보기
    • woncoding
      • TIL
      • WIL
    • source Code
      • Python
      • Programmers
      • BAEKJOON

블로그 메뉴

  • 방명록

티스토리

Github · Wonprogrammer
hELLO · Designed By 정상우.
_won_

wonprogrammer

source Code/Programmers

Programmers | week3 문제 풀이

2023. 2. 9. 14:23

Programmers 문제 풀이

12916

# 문자열내p와y의개수

def solution(s):
    count_x = 0
    count_y = 0

    for i in s:
        if (i == 'p') or (i == 'P'):
            count_x += 1
        elif (i == 'y') or (i == 'Y'):
            count_y += 1

    if count_x == count_y:
        answer = True
    elif count_x != count_y:
        answer = False

    return answer

 

 

12948

# 핸드폰 번호 가리기

def solution(phone_number):
    answer = ''
    answer = phone_number.replace(phone_number[:-4], '*'*len(phone_number[:-4]))
    return answer


phone_number = "01033334444"
print(solution(phone_number))

 

 

12935

# 제일작은수제거하기

def solution(arr):
    answer = []
    if len(arr) > 1:
        arr.remove(min(arr))
        
        return arr
    else:
        answer.append(-1)
        return answer

 

12943

# 콜라츠 추측

def solution(num):
    answer = 0
    count = 0
    
    if num == 1:
        return 0

    while True:
        if num%2 == 0:
            num = num/2
            count += 1
            if num == 1:
                break
        else :
            num = (num*3)+1
            count += 1
            if num == 1:
                break
    
    if count > 500:
        return -1
    else:
        return count

 

12922

# 수박수박수박수박수박수?

def solution(n):
    answer = ''
    for i in range (1,n+1):
        if i%2 == 1:
            answer += '수'
        else:
            answer += '박'
    return answer

 

12903

# 가운데 글자 가져오기

def solution(s):
    answer = ''
    n = 0
    if len(s) % 2 == 0:
        n = len(s)//2
        answer = s[n-1]+s[n]
        return answer
    else :
        n = len(s)//2
        answer = s[n]
        return answer

 

 

12909

# 올바른 괄호 - 스택/큐
# https://school.programmers.co.kr/learn/courses/30/lessons/12909

def solution (s):
    stack = []

    for c in s:
        if c == "(":
            stack. append (c)
        else:
            if stack != []: # 쌍이 있다면
                stack.pop ()
            else:
                return False
    if stack != []:
        return False 
    
    return True

 

 

42747

# H-Index - 정렬

def solution(citations):
    citations.sort(reverse=True)

    for idx , citation in enumerate (citations):
        if idx >= citation:
            return idx
    return len (citations)

print(solution ([3, 0, 6, 1, 5]))


'''
어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.

citations : len = 논문갯수 / index = 인용횟수
해당 숫자 포함(보다큰) 갯수가 len중에 젤 많다면 그거임

-> h번 이상 인용된 h편의 논문 찾기!
알고리즘에서 빈번하게 쓰임 : enumerate
'''

 

 

1845

# 폰켓몬-해시
# https://school.programmers.co.kr/learn/courses/30/lessons/1845

def solution(nums):
    monster = list(set(nums)) 
    cnt=len(nums)//2# 기존에 뽑을 수 있는 만큼

    if len(monster) < cnt:
        return len(monster) # 중복 제거한 만큼
    
    return cnt

 

 

17682

# 다트 게임 2018 KAKAO BLIND RECRUITMENT
# https://school.programmers.co.kr/learn/courses/30/lessons/17682

def solution (dartResult):
    nums = []
    temp = 0
    strIdx = 0

    for i in dartResult:
        if "0" <= i <= "9":
            temp = temp * 10 + int (i)
        elif i == "S":
            nums. append(temp)
            temp = 0
            strIdx += 1 
        elif i == "D":
            nums.append (temp**2)
            temp = 0
            strIdx += 1 
        elif i == "T":
            nums.append(temp ** 3)
            temp = 0
            strIdx += 1 
        elif i == "*":
            if strIdx > 1:
                nums [strIdx - 2] *= 2
            nums [strIdx - 1] *= 2 
        elif i == "#":
            nums [strIdx - 1] *= -1
            
    return sum(nums)
    

'''
다트 게임은 총 3번의 기회로 구성된다.
각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다.
점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수1 , 점수2 , 점수3 )으로 계산된다.
옵션으로 스타상(*) , 아차상(#)이 존재하며 스타상(*) 당첨 시 해당 점수와 바로 전에 얻은 점수를 각 2배로 만든다. 아차상(#) 당첨 시 해당 점수는 마이너스된다.
스타상(*)은 첫 번째 기회에서도 나올 수 있다. 이 경우 첫 번째 스타상(*)의 점수만 2배가 된다. (예제 4번 참고)
스타상(*)의 효과는 다른 스타상(*)의 효과와 중첩될 수 있다. 이 경우 중첩된 스타상(*) 점수는 4배가 된다. (예제 4번 참고)
스타상(*)의 효과는 아차상(#)의 효과와 중첩될 수 있다. 이 경우 중첩된 아차상(#)의 점수는 -2배가 된다. (예제 5번 참고)
Single(S), Double(D), Triple(T)은 점수마다 하나씩 존재한다.
스타상(*), 아차상(#)은 점수마다 둘 중 하나만 존재할 수 있으며, 존재하지 않을 수도 있다.
'''
저작자표시 비영리 변경금지 (새창열림)

'source Code > Programmers' 카테고리의 다른 글

Programmers | week2 문제 풀이  (0) 2023.02.09
Programmers | week1 문제 풀이  (0) 2023.02.09
    'source Code/Programmers' 카테고리의 다른 글
    • Programmers | week2 문제 풀이
    • Programmers | week1 문제 풀이
    _won_
    _won_
    Coding Practice blog

    티스토리툴바