Day8

  • 간단한 논리 연산
  • 주사위 게임 3
  • 글자 이어 붙여 문자열 만들기
  • 9로 나눈 나머지
  • 문자열 여러 번 뒤집기

간단한 논리 연산

문제 설명

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

 

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

 


주사위 게임 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 함수를 작성해 주세요.

 

며칠 전에 풀었던 주사위 게임 풀이에서 set 함수로 중복된 값을 추리고 len 함수로 개수를 알아내 문제를 풀었던 기억이 있다. 이 방식으로 접근해보았을 때

  • p p p p > 1
  • p p p q > 2
  • p p q q > 2
  • p p q r > 3
  • p q r t > 4

> 값이 2로 동일할 때 어떻게 구분할 것인가?

> p p q r 일 때의 연산이 q * r 인데 어떤게 p,q,r을 어떻게 구분할 것인가? 의 문제가 생겼다 ..... 음

def solution(a, b, c, d):
    answer = 0
    lst = [a,b,c,d]
    length = len(set(lst))
    count = [lst.count(i) for i in lst]

    if length == 1: answer = 1111 * a
    elif length == 4 : answer = min(a,b,c,d)
    elif length == 2:
        if 3 in count:
            p = [lst[index] for index, value in enumerate(count) if value == 3]
            q = [lst[index] for index, value in enumerate(count) if value == 1]
            answer = (10 * p[0] + q[0])**2
        else:
            answer = (a + c) * abs(a - c) if a == b else (a + b) * abs(a - b)

    else:
        answer_values = [lst[index] for index, value in enumerate(count) if value == 1]
        answer = answer_values[0] * answer_values[1]

    return answer

머리 쥐어짜내가며 짠 코드 ..뇌절코드.. 한시간 넘게 걸려서 짠......코드예요 ....

 

1. length가 2일 때

1-1. p p p q 인 경우 count가 3임

1-2. p p q q 인 경우, a==b면 c==d이기 때문에 어차피 값이 2개밖에 없으니 a,c를 p,q로 활용해서 연산

2. length가 3일 때, p p q r 인 경우

count값이 1 > q, r 을 구해야하므로

값이 1을 만족할 때의 인덱스를 사용해서 lst에서 값을 구함.

 

아우 어렵게도 짰다 그쵸 .. 

암튼  [lst[index] for index, value in enumerate(count) if value == n] 이 코드를 위주로 생각해서 짰고,

value가 n을 만족할 때의 인덱스를 사용해서 값을 구한 것입니다!

def solution(a, b, c, d):
    l = [a,b,c,d]
    c = [l.count(x) for x in l]
    print(c)
    if max(c) == 4:
        return 1111*a
    elif max(c) == 3:
        print(l[c.index(3)])a
        return (10*l[c.index(3)]+l[c.index(1)])**2
    
    elif max(c) == 2:
        if min(c) == 1:
            return eval('*'.join([str(l[i]) for i, x in enumerate(c) if x == 1]))
        else:
            return (max(l) + min(l)) * abs(max(l) - min(l))
    else:
        return min(l)

다른 사람 풀이:

애초에 4,3,2,1의 기준값을 나눈 것부터 나랑 달랐다.

나는 set을 기준으로 나누었는데 다른사람들은 count함수를 기준으로 나누었다.

다른 부분이 예를들어 p p p q 라면 set은 > p, q만남고 값이 2가 되는데

count를 사용해서 lst 배열대로 남겨두 [3, 3, 3, 1]이 되어 max(c)를 하였을 때 값이 3이 나온다.

이렇게 해야 뒤에서 인덱스를 구할 때 편해서 이 방법이 훨씬 ... 나은 것 같다.

내가 푼 방법은 하나하나 계산을 한 느낌이랄까 ....

 

count랑 index함수를 사용한 풀이를 제대로 처음본 것 같다.

 

c = [l.count(x) for x in l] : 리스트의 특정 원소 개수를 세서 c에 저장한다.

1. max(c) == 4일 때, 특정 원소 개수가 4개일 때 > 모두 같은 값 

2. max(c) == 3일 때, 특정 원소 개수가 3개일 때 > 3개 같은 값, 1개만 다름

3. max(c) == 2일 때

3-1 min(c)는 1일 때 p p q r 인 경우

c의 값이 1일 때의 인덱스를 구해서 두 값을 곱함

3-2 p p q q 인 경우

값이 어차피 2개이니 list에서 최솟값과 최댓값을 이용해 p, q로 보고 계산

 

어려운데 .. 그래도 새로운 것을 알아가는 것 같아서 좋슴니다. 

비록 제 시간은 훅.. 날아가버렸지만요 ㅠ


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

문제 설명

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

 

def solution(my_string, index_list):
    return ''.join(my_string[i] for i in index_list)

9로 나눈 나머지

문제 설명

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

 

def solution(number):
    return int(number) % 9

사실 그냥 이렇게 풀었는데

이렇게 푸는 게 정석은 아니었나보다.

def solution(number):
    return sum(list(map(int, number))) % 9

문제에서 팩트는 그 정수의 각 자리 숫자의 합을 9로 나눈 나머지와 같은 것

 


문자열 여러 번 뒤집기

문제 설명

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

 

def solution(my_string, queries):    
    for s, e in queries:
        my_string = my_string.replace(my_string[s:e+1], my_string[s:e+1][::-1])
    return my_string

인덱스 s~e 부분을 뒤집어서 replace함수로 대체하는 방법을 사용했는데, 반례가 계속 나와서 결국 방법을 바꿨다.

def solution(my_string, queries):    
    for s, e in queries:
        my_string = my_string[:s] + my_string[s:e+1][::-1] + my_string[e+1:]
    return my_string

replace 함수를 사용하지 않고 슬라이싱만 이용해서 s~e부분을 뒤집고 앞뒤로는 그대로 가져가기


문제들 난이도가 오락가락하는게 병주고 약주는 건가 ..... 주사위 문제에서 멘탈나갔는데 3,4,5는 그래도 순탄히 풀리고,, 이게 완전 기초일텐데 다른 건 얼마나 어려울까 .....ㅎㅎㅎㅎㅜㅜㅜ 어제 삼전 sw 어쩌고 신청을 해놔서 사전 문제 풀려고 봤는데 진짜 도저히 모르겠더라고요 ..... 그래두 꾸준히 해보자 아자잣

Day6

  • 마지막 두 원소
  • 수 조작하기 1
  • 수 조작하기 2
  • 수열과 구간 쿼리 3
  • 수열과 구간 쿼리 2

마지막 두 원소

문제 설명

정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.

 

def solution(num_list):
    if num_list[-1] > num_list[-2]:
        num_list.append(num_list[-1] - num_list[-2])
    else:
        num_list.append(num_list[-1] * 2)

    return num_list

 

def solution(l):
    l.append(l[-1]-l[-2] if l[-1]>l[-2] else l[-1]*2)
    return l

삼항 연산자로 간단하게도 가능


수 조작하기 1

문제 설명

정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다."w" : n이 1 커집니다."s" : n이 1 작아집니다."d" : n이 10 커집니다."a" : n이 10 작아집니다.위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.

 

def solution(n, control):
    for i in control:
        if i == "w": n += 1
        elif i == "s": n -= 1
        elif i == "d": n += 10
        else: n -= 10
    return n

제일 많은 정석적인.. 풀이? 인듯

def solution(n, control):
    answer = n
    c = { 'w':1, 's':-1, 'd':10, 'a':-10}
    for i in control:
        answer += c[i]
    return answer

딕셔너리를 이용해서 키-값으로 더한 풀이, 신박하다


수 조작하기 2

문제 설명

정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다."w" : 수에 1을 더한다."s" : 수에 1을 뺀다."d" : 수에 10을 더한다."a" : 수에 10을 뺀다.그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다.주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.

 

def solution(numLog):
    answer = ''
    for i in range(1, len(numLog)):
        if numLog[i-1] + 1 == numLog[i]:
            answer += "w"
        elif numLog[i-1] - 1 == numLog[i]:
            answer += "s"
        elif numLog[i-1] + 10 == numLog[i]:
            answer += "d"
        else:
            answer += "a"
    return answer

전 문제랑 비슷한듯 어려움

나는 현재값 +n이 다음값과 같다면 ~ 이런식으로 해석하고 풀었는데

def solution(numLog):
    answer = ''
    for i in range(1, len(numLog)):
        dif = numLog[i] - numLog[i - 1]
        if dif == 1:
            answer += 'w'
        elif dif == -1:
            answer += 's'
        elif dif == 10:
            answer += 'd'
        elif dif == -10:
            answer += 'a'
        else:
            pass
    return answer​

다른 사람들은 이런식으로 현재값과 이전값의 차이를 이용해서 구한 것 같다.

이런 문제 풀 때, 인덱스에러 나만 많이 나오나.. 주의해가며 풀어야겠다.


수열과 구간 쿼리 3

문제 설명

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다.각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.
def solution(arr, queries):
    for query in queries:
        for i in range(1, 2):
            j = query[i-1]
            k = query[i]
            arr[j], arr[k] = arr[k], arr[j]
    return arr

중첩 반복문 .. 이런 문제에 쓰면 안된다는 것을 알지만 해결법이 떠오르지 않았어 ㅠ

def solution(arr, queries):
    for a,b in queries:
        arr[a],arr[b]=arr[b],arr[a]
    return arr

다른 사람 풀이:

반복문 이렇게 두 개의 값을 가져올 수 있는지.. 몰랐어요 ~~^^

쿼리 안의 쿼리를 인덱스로 이용해서 리스트 원소 교환


수열과 구간 쿼리 2

문제 설명

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.

def solution(arr, queries):
    answer = []
    temp = []
    for s,e,k in queries:
        new_arr = arr[s:e+1]
        temp = [i for i in new_arr if i > k]

        if temp:
            value = min(temp)
            answer.append(value)
        else:
            answer.append(-1)

    return answer

아오 .....어렵다 .....ㅠㅠ 힌트랑 이것저것 도움받고 결국 성공 ...

1. arr 배열을 인덱스 s~e까지 자르기

2. 잘린 배열을 반복문을 통해 k보다 큰 값 찾아서 temp에 넣기

3. temp가 비어있지 않을 때, temp의 최솟값 찾기, 비어있으면 answer은 -1

4. 최솟값을 최종값으로 저장 answer에 담기

5. answer 반환 끝........

 

ㅠㅠ 머리가 굳었나봐요 5문제 푸는 시간이 점점 길어지고 있다 ....... 

오늘은 약 두 시간 반정도 소요 ....

 

Day5

  • 코드 처리하기
  • 등차수열의 특정한 항만 더하기
  • 주사위 게임2
  • 원소들의 곱과 합
  • 이어 붙인 수

코드 처리하기

문제 설명

문자열 code가 주어집니다.code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다.mode는 0과 1이 있으며, idx를 0 부터 code의 길이 - 1 까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다.mode가 0일 때code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다.code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다.mode가 1일 때 code[idx]가 "1"이 아니면 idx가 홀수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다.code[idx]가 "1"이면 mode를 1에서 0으로 바꿉니다.문자열 code를 통해 만들어진 문자열 ret를 return 하는 solution 함수를 완성해 주세요.단, 시작할 때 mode는 0이며, return 하려는 ret가 만약 빈 문자열이라면 대신 "EMPTY"를 return 합니다.

def solution(code):
    mode = False
    ret = ''
    
    for i in range(len(code)):
        if mode == False:
            if code[i]!="1" and i%2==0:
                ret += code[i]
            mode = not mode if code[i] == "1" else mode
        else:
            if code[i]!="1" and i%2==1:
                ret += code[i]
            mode = not mode if code[i] == "1" else mode
    if ret == '':
        ret = "EMPTY"
            
    return ret

아직은 요령이 없어서 문제 설명 곧이 곧대로 해석해서 코드를 짜는 것 같다.

 

1. if문으로 mode > 0,1 구분

2. 0일 때, code[i]가 1이 아니고, 짝수일 때 문자 추가 + code[i]가 1이면 토글

3. 1일 때, code[i]가 1이 아니고, 홀수일 때 문자 추가 + code[i]가 1이면 토글

4. 만들어진 문자열 ret이 빈 문자열이면 EMPTY 반환

def solution(code):
    answer = ''

    mode = 0
    for i in range(len(code)):
        if code[i] == '1':
            mode ^= 1
        else:
            if i % 2 == mode:
                answer += code[i]

    return answer if answer else 'EMPTY'

다른 사람 풀이 : 

1. code 문자열에서 "1"을 만날 때마다 mode를 토글하는 코드 :  mode ^= 1

(문자열이 1이면 추가 안하고 토글만)

2. if i % 2 == mode: > (mode == 0 and i % 2 ==0) or (mode == 1 and i % 2 ==1) 로 해석할 수 있음

> 그래서 mode 0이고 짝수이거나, mode 1이고 홀수일 때, 문자열 추가!

3. 만약 answer가 비어 있다면 "EMPTY"를 반환 

 


등차수열의 특정한 항만 더하기

문제 설명

두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return 하는 solution 함수를 작성해 주세요.

 

def solution(a, d, included):
    res = 0
    for i in range(len(included)):
        res += (a + i*d) if included[i] == True else 0
        
    return res

다행히?도 등차수열 합공식이 기억이 나서 활용했다.

불린 배열이 True일 때의 항만 더하기


주사위 게임 2

문제 설명

1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
def solution(a, b, c):
    answer = 0
    if a != b and b != c and a != c:
        answer = a + b + c 
    elif a == b == c:
        answer = (a + b + c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)
    else: answer = (a + b + c) * (a**2 + b**2 + c**2)
        
    return answer

야호

def solution(a, b, c):
    check=len(set([a,b,c]))
    if check==1:
        return 3*a*3*(a**2)*3*(a**3)
    elif check==2:
        return (a+b+c)*(a**2+b**2+c**2)
    else:
        return (a+b+c)

다른 사람 풀이 :

set 클래스는 중복되지 않는 원소들로 구성된 집합(Set)을 나타냄

 

set 클래스를 처음 알았고 요렇게도 활용할 수 있구나

set([a, b, c)] : 주어진 리스트로부터 집합을 생성 > 집합은 중복된 원소를 허용하지 않고, 따라서 중복 값은 하나로 축소됨.

a,b,c 값을 비교하여 생성된 집합의 길이가

1이면 3개의 수가 다 같은 것, 2면 어느 2개의 수가 같은 것, 3이면 3개의 수가 모두 다름.

요렇게 활용해서 값을 추출한다. 


원소들의 곱과 합

문제 설명

문제 설명
정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요.

 

def solution(num_list):
    sum = 0
    cal = 1
    for i in range(len(num_list)):
        sum += num_list[i]
        cal *= num_list[i]
    sum = sum ** 2

    return 1 if cal < sum else 0

 

def solution(num_list):
    s = sum(num_list) ** 2
    m = eval('*'.join([str(n) for n in num_list]))
    return 1 if s > m else 0

다른 사람 풀이:

python 내장함수들을 잘 활용하는 것 같다.

sum 함수로 리스트의 모든 요소를 더하고 제곱함.

eval 함수 : 문자열로 표현된 파이썬 식(expression)을 실행하고 결과를 반환

리스트의 각 요소를 문자열로 변환한 리스트 생성 > 각 요소를 * 로 연결 > eval 함수로 수식 실행


이어 붙인 수

문제 설명

정수가 담긴 리스트 num_list가 주어집니다. num_list의 홀수만 순서대로 이어 붙인 수와 짝수만 순서대로 이어 붙인 수의 합을 return하도록 solution 함수를 완성해주세요.

 

def solution(num_list):
    even = ""
    odd = ""

    for i in num_list:
        if i % 2 == 0:
            even += str(i)
        else:
            odd += str(i)
    return int(even) + int(odd)

if문으로 홀, 짝 구분 후 문자열 이어붙이기

마지막 return 할때 int로 더해서 출력

 

끝 아 졸려


 

Day4

  • n의 배수
  • 공배수
  • 홀짝에 따라 다른 값 반환하기
  • 조건 문자열
  • flag에 따라 다른 값 반환하기

n의 배수

문제 설명

정수 num과 n이 매개 변수로 주어질 때, num이 n의 배수이면 1을 return n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요.

 

def solution(num, n):
    return 1 if num % n == 0 else 0

나이쓰

def solution(num, n):
    return int(num % n == 0)

다른 사람 풀이 : true => 1, false => 0 을 활용해서 이렇게 풀 수도 있군


공배수

문제 설명

정수 number와 n, m이 주어집니다. number가 n의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.

 

def solution(num, n, m):
    return 1 if num % n == 0 and num % m == 0 else 0
def solution(number, n, m):
    return int(bool(number % n == 0) & bool(number % m == 0))

다른 사람 풀이 :

bool - true/false >> int - 1,0 출력

oh... damn~~~~


홀짝에 따라 다른 값 반환하기

문제 설명

양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.
def solution(n):
    res = 0  
    if n%2==1:
        for i in range (1, n+1, 2):
            res += i
    else:
        for i in range(2, n+1, 2):
            res += i*i
    return res

정답이지만 제 코드는 상당히 기네요. 뭔가 짧고 신박한 다른 사람 풀이 보면 킹받음 

def solution(n):
    if n%2:
        return sum(range(1,n+1,2))
    return sum([i*i for i in range(2,n+1,2)]

다른 사람 풀이 : 

[i*i for in range(2, n+1, 2)] > 리스트 컴프리헨션 표현식 


조건 문자열

문제 설명

문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.두 수가 n과 m이라면">", "=" : n >= m"<", "=" : n <= m">", "!" : n > m"<", "!" : n < m두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.
def solution(ineq, eq, n, m):
    res = 0
    if eq == "=":
        cal = ineq + eq
        if cal == ">=":
            res = int(bool(n >= m))
        elif cal =="<=":
            res = int(bool(n <= m))

    else:
        cal = ineq
        if cal == ">":
            res = int(bool(n > m))
        elif cal =="<":
            res = int(bool(n < m))
    return res

제 코드ㅡㅡ 너무우 길어요

def solution(ineq, eq, n, m):
    return int(eval(str(n)+ineq+eq.replace('!', '')+str(m)))

다른 사람 풀이 :

1. 느낌표를 공백으로 대체 

2. n과 m을 문자열로 변환하여 ineq와 eq 문자열과 함께 문자열을 생성 

3. eval함수로 문자열을 평가하여 비교식 실행 

4. 정수로 변환하여 최종 결과 반환 ( True는 1로, False는 0으로)

eval
문자열을 파이썬 코드로 해석하고 실행함.
단일 표현식을 평가하는 데 사용되며, 표현식은 변수, 연산자, 함수 호출 등이 포함될 수 있다.


replace('!', ' ') 

특정 부분 문자열을 다른 문자열로 대체하는 데 사용됩니다.
replace('!', ' ')는 문자열에서 모든 느낌표(!)를 공백으로 대체하는 것을 의미

 


flag에 따라 다른 값 반환하기

문제 설명

두 정수 a, b와 boolean 변수 flag가 매개변수로 주어질 때, flag가 true면 a + b를 false면 a - b를 return 하는 solution 함수를 작성해 주세요.

 

def solution(a, b, flag):
    return a + b if flag else a - b

 

야호 오늘도 해냈다

+ Recent posts