1. 간단한 논리 연산

boolean 변수 x1, x2, x3, x4가 매개변수로 주어질 때, 다음의 식의 true/false를 return 하는 solution 함수를 작성해 주세요.

  • (x1 ∨ x2) ∧ (x3 ∨ x4)

문제 정리

  • ∨ 기호로 연산되는 경우 : 하나만 True 여도 True를 반환한다.
    • or 연산과 동일한 기능
  • ∧ 기호로 연산되는 경우 : 하나만 False 여도 False를 반환한다.
    • and 연산과 동일한 기능
1. True or True >>> True 반환
2. True or False >>> True 반환
3. False or False >>> False 반환
4. True and True >>> True 반환
5. True and False >>> False 반환
6. False and False >>> False 반환

코드 작성

def solution(x1, x2, x3, x4):
    return (x1 or x2) and (x3 or x4)


2. 주사위 게임 3

1부터 6까지 숫자가 적힌 주사위가 네 개 있습니다. 네 주사위를 굴렸을 때 나온 숫자에 따라 다음과 같은 점수를 얻습니다.

  • 네 주사위에서 나온 숫자가 모두 p로 같다면 1111 × p점을 얻습니다.
  • 세 주사위에서 나온 숫자가 p로 같고 나머지 다른 주사위에서 나온 숫자가 q(p ≠ q)라면 (10 × p + q)**2 점을 얻습니다.
  • 주사위가 두 개씩 같은 값이 나오고, 나온 숫자를 각각 p, q(p ≠ q)라고 한다면 (p + q) × |p - q|점을 얻습니다.
  • 어느 두 주사위에서 나온 숫자가 p로 같고 나머지 두 주사위에서 나온 숫자가 각각 p와 다른 q, r(q ≠ r)이라면 q × r점을 얻습니다.
  • 네 주사위에 적힌 숫자가 모두 다르다면 나온 숫자 중 가장 작은 숫자 만큼의 점수를 얻습니다.

네 주사위를 굴렸을 때 나온 숫자가 정수 매개변수 a, b, c, d로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.

제한사항

  • a, b, c, d는 1 이상 6 이하의 정수입니다.

코드 작성

def solution(a, b, c, d):
    answer = 0
    dic = {k:0 for k in [a, b, c, d]}
    keys = list(dic.keys())
    # 딕셔너리에 키별로 value 입력
    for k in [a, b, c, d]:
        dic[k] += 1
    # 딕셔너리 value 값을 기준으로 오름차순 정렬
    reverse_dic = {v:k for k,v in dic.items()}    
    
    # 네 주사위 숫자가 모두 동일
    if len(keys) == 1:
        answer = 1111 * a
    # 주사위의 숫자가 3, 1 또는 2, 2 개씩 동일
    elif len(keys) == 2:
        if max(dic.values()) == 3:
            answer = (10 * reverse_dic[3] + reverse_dic[1])**2
        else:
            answer = (keys[0] + keys[1]) * abs(keys[0] - keys[1])
    # 주사위의 숫자가 2, 1, 1 인 경우    
    elif len(keys) == 3:
        condition_list = [k for k, v in dic.items() if v == 1]
        answer = condition_list[0] * condition_list[1]
    # 주사위의 숫자가 모두 다름
    else:
        answer = min([a, b, c, d])

    return answer


3. 글자 이어 붙여 문자열 만들기

문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.

제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string의 원소는 영소문자로 이루어져 있습니다.
  • 1 ≤ index_list의 길이 ≤ 1,000
  • 0 ≤ index_list의 원소 < my_string의 길이

코드 작성

def solution(my_string, index_list):
    answer = ''
    for i in index_list:
        answer += my_string[i]
    return answer


4. 9로 나눈 나머지

음이 아닌 정수를 9로 나눈 나머지는 그 정수의 각 자리 숫자의 합을 9로 나눈 나머지와 같은 것이 알려져 있습니다. 이 사실을 이용하여 음이 아닌 정수가 문자열 number로 주어질 때, 이 정수를 9로 나눈 나머지를 return 하는 solution 함수를 작성해주세요.

제한사항

  • 1 ≤ number의 길이 ≤ 100,000
  • number의 원소는 숫자로만 이루어져 있습니다.
  • number는 정수 0이 아니라면 숫자 ‘0’으로 시작하지 않습니다.

코드 작성

def solution(number):
    num_add = sum([int(s) for s in number])
    return num_add % 9


5. 문자열 여러 번 뒤집기

문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다. queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요.

제한사항

  • my_string은 영소문자로만 이루어져 있습니다.
  • 1 ≤ my_string의 길이 ≤ 1,000
  • queries의 원소는 [s, e]의 형태로 0 ≤ s ≤ e < my_string의 길이를 만족합니다.
  • 1 ≤ queries의 길이 ≤ 1,000

코드 작성

def solution(my_string, queries):
    answer = list(my_string)
    for q in queries:
        answer[q[0]:q[1]+1] = answer[q[0]:q[1]+1][::-1]
    return ''.join(answer)


6. 문제 출처


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기