5 분 소요

7의 개수

문제 설명 머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇개 있는지 return 하도록 solution 함수를 완성해보세요.

제한 사항 1 ≤ array의 길이 ≤ 100 0 ≤ array의 원소 ≤ 100,000

입출력 예

array result
[7, 77, 17] 4
[10, 29] 0

입출력 예 설명

입출력 예 #1

  • [7, 77, 17]에는 7이 4개 있으므로 4를 return 합니다.

입출력 예 #2

  • [10, 29]에는 7이 없으므로 0을 return 합니다.

문제 풀이

def solution(array):
    array = list(map(str, array))
    return ''.join(array).count("7")
  • ' '.join([str]) join은 리스트를 문자열로 바꿔줍니다. 여기서 주의해야할 점은 숫자 리스트말고 문자열 리스트여야 한다는 점입니다.

다른 사람의 풀이

def solution(array):
    return str(array).count('7')

map을 통해서 바꾸는 것 말고 리스트를 str하면 전체 문자열이 된다는 것을 알 수 있습니다.

OX퀴즈

문제 설명

덧셈, 뺄셈 수식들이 ‘X [연산자] Y = Z’ 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 “O”를 틀리다면 “X”를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.

제한 사항

  • 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
  • 1 ≤ quiz의 길이 ≤ 10
  • X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
  • X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
  • -10,000 ≤ X, Y ≤ 10,000
  • -20,000 ≤ Z ≤ 20,000
  • [연산자]는 + 와 - 중 하나입니다.

입출력 예

quiz result
[“3 - 4 = -3”, “5 + 6 = 11”] [“X”, “O”]
[“19 - 6 = 13”, “5 + 66 = 71”, “5 - 15 = 63”, “3 - 1 = 2”] [“O”, “O”, “X”, “O”]

입출력 예 설명

  • 입출력 예 #1
    • 3 - 4 = -3 은 틀린 수식이므로 “X”, 5 + 6 = 11 은 옳은 수식이므로 “O” 입니다. 따라서 [“X”, “O”]를 return합니다.
  • 입출력 예 #2
    • 19 - 6 = 13 은 옳은 수식이므로 “O”, 5 + 66 = 71 은 옳은 수식이므로 “O”, 5 - 15 = 63 은 틀린 수식이므로 “X”, 3 - 1 = 2는 옳은 수식이므로 “O” 따라서 [“O”, “O”, “X”, “O”]를 return합니다.

문제 풀이

def solution(quiz):
    answer=[]
    for i in quiz:
        a = i.split("=")
        if eval(a[0]) == int(a[1]):
            answer.append("O")
        else:
            answer.append("X")
    return answer

우선 리스트 quiz"="를 기준으로 나눠서 새로운 리스트를 생성해줍니다.

새로운 리스트의 0번째에는 연산식이 들어있고 1번째에는 값이 들어있습니다.

eval를 통해서 계산한 값이 1번에 들어있는 값과 같다면 O아니라면 X를 담습니다.

다른 사람의 풀이

def valid(equation):
    equation = equation.replace('=', '==')
    return eval(equation)

def solution(equations):
    return ["O" if valid(equation) else "X" for equation in equations] 
  • valid

    파이썬에서 valid는 특정 값이나 조건이 유효한지, 즉 규칙에 맞거나 오류가 없는지를 확인하는 의미로 사용됩니다.

    보통 데이터를 검사할 때 사용됩니다.

    사용자 입력이 유효한지, 변수 값이 적절한지, 혹은 함수의 인자가 예상대로 동작하는지 등을 확인 할 때, valid라는 용어를 사용합니다.

solution에서 valid라는 함수를 만들어 해당 문자열이 유효한지에 대해 판단합니다.

A로 B 만들기

문제 설명

문자열 beforeafter가 매개변수로 주어질 때, before의 순서를 바꾸어 after를 만들 수 있으면 1을, 만들 수 없으면 0을 return 하도록 solution 함수를 완성해보세요.

제한 사항

  • 0 < before의 길이 == after의 길이 < 1,000
  • beforeafter는 모두 소문자로 이루어져 있습니다.

입출력 예

before after result
“olleh” “hello” 1
“allpe” “apple” 0

입출력 예 설명

  • 입출력 예 #1
    • “olleh”의 순서를 바꾸면 “hello”를 만들 수 있습니다.
  • 입출력 예 #2
    • “allpe”의 순서를 바꿔도 “apple”을 만들 수 없습니다.

문제 풀이

def solution(before, after):
    a = set(before)
    for i in a:
        if before.count(i) != after.count(i):
            return 0
    return 1

다른 사람의 풀이

def solution(before, after):
    before=sorted(before)
    after=sorted(after)
    if before==after:
        return 1
    else:
        return 0
----
def solution(before, after):
    return 1 if sorted(before)==sorted(after) else 0

이진수 더하기

문제 설명

이진수를 의미하는 두 개의 문자열 bin1bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.

제한 사항

  • return 값은 이진수를 의미하는 문자열입니다.
  • 1 ≤ bin1, bin2의 길이 ≤ 10
  • bin1bin2는 0과 1로만 이루어져 있습니다.
  • bin1bin2는 “0”을 제외하고 0으로 시작하지 않습니다.

입출력 예

bin1 bin2 result
“10” “11” “101”
“1001” “1111” “11000”

입출력 예 설명

  • 입출력 예 #1
    • 10 + 11 = 101 이므로 “101” 을 return합니다.
  • 입출력 예 #2
    • 1001 + 1111 = 11000 이므로 “11000”을 return합니다.

문제 풀이

def binary(bin):
    num = 0
    for i, v in enumerate(bin):
        if v == "1":
            num += 2 ** (len(bin) - i -1)
    return num
def solution(bin1, bin2):
    answer = ""
    bin3 = binary(bin1) + binary(bin2)
    while bin3 >= 2 :
        if bin3 % 2 == 0:
            bin3 = bin3 // 2
            answer += "0"
        else:
            bin3= bin3 // 2
            answer += "1"
    answer += "1"
    return answer[::-1]
  • ^은 제곱식이 아니다.

    제곱을 할 때 일반적인 표현으로 ^을 많이 사용합니다. 그러나 제곱을 할때^이 아닌 **이나 pow(n,m)을 사용합니다.

    ^는 비트 연산자 XOR입니다.

    이 연산자는 두 숫자 간의 비트 담위 비교에서 서로 다른 비트는 1, 동일한 비트는 0으로 계산합니다.

image-20250105214308213

5번 테스트 케이스에서 에러가 났습니다.

이유는 둘다 “0”, “0”인 경우도 고려해야하기 때문입니다.

    if bin1 == "0" and bin2 == "0":
        return "0"

를 추가해줬습니다.

image-20250105214738612

다른 사람의 풀이

def solution(bin1, bin2):
    answer = bin(int(bin1,2) + int(bin2,2))[2:]
    return answer

bin()

10진수 숫자를 이진수 문자열로 반환하는 메소드입니다.

int(2진수문자열, 2)

2진수 문자열을 10진수 정수로 변환하는 코드입니다.

` answer = bin(int(bin1,2) + int(bin2,2))[2:]`

여기서 [2:]가 붙은 이유는 bin()함수는 10진수 정수를 2진수 문자열로 변환하는데 이때 항상 0b로 시작하는 2진수 문자열을 반환합니다.

이때, 0b는 2진수 숫자를 나타내는 접두사입니다. 파이썬에서 2진수 리터럴을 표현할 때, 앞에 0b를 붙여서 2진수라는 것을 명시합니다.

잘라서 배열로 저장하기

문제 설명

문자열 my_strn이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.

제한 사항

  • 1 ≤ my_str의 길이 ≤ 100
  • 1 ≤ nmy_str의 길이
  • my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.

입출력 예

my_str n result
“abc1Addfggg4556b” 6 [“abc1Ad”, “dfggg4”, “556b”]
“abcdef123” 3 [“abc”, “def”, “123”]

입출력 예 설명

입출력 예 #1

  • “abc1Addfggg4556b” 를 길이 6씩 잘라 배열에 저장한 [“abc1Ad”, “dfggg4”, “556b”]를 return해야 합니다.

입출력 예 #2

  • “abcdef123” 를 길이 3씩 잘라 배열에 저장한 [“abc”, “def”, “123”]를 return해야 합니다.

유의사항

  • 입출력 예 #1의 경우 “abc1Addfggg4556b”를 길이 6씩 자르면 “abc1Ad”, “dfggg4” 두개와 마지막 “556b”가 남습니다. 이런 경우 남은 문자열을 그대로 배열에 저장합니다.

문제 풀이

def solution(my_str, n):
    l = len(my_str)
    a = l//n
    b = l%n
    if b != 0:
        a+=1
    answer = []
    for i in range(a):
        if (i*n)+n > len(my_str):
            answer.append(my_str[i*n:])
        else:
            answer.append(my_str[i*n:(i*n)+n])
    return answer

다른 사람의 풀이

def solution(my_str, n):
    return [my_str[i: i + n] for i in range(0, len(my_str), n)]

range에 시작과 끝 그리고 숫자를 넣으면 그 해당 숫자만큼 넘어간다는것을 잊고 있었습니다..

그래도 다시 상기할 수 있어 다행입니다.

업데이트:

댓글남기기