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

 

야호 오늘도 해냈다

하루에 5문제씩 매일 풀고 기록하기

새해니까 꾸준히 해보도록 해야지 작심삼일 제발 노노 ~~

문제가 어려운 건 아닌데 헷갈리고 바로 바로 해결방법이 생각나지 않는다 ..

그래도 꾸준히하면 늘겠지? 알고리즘 실력은 진짜 응애인 것 같다. 응애~


Day3 연산

  • 문자열 섞기
  • 문자 리스트를 문자열로 변환하기
  • 문자열 곱하기
  • 더 크게 합치기
  • 두 수의 연산값 비교하기

문자열 섞기

문제 설명

길이가 같은 두 문자열 str1과 str2가 주어집니다.
두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.

 

def solution(str1, str2):
    answer = ''
    
    for i in range(len(str1)):
        answer += (str1[i] + str2[i])
    
    return answer

 

반복문으로 인덱스를 활용해 문자를 하나씩 가져오고 더하기 연산자로 answer 변수에 반복해서 담는다.

이 문제는 다행히?도 내가 푼 방식으로 사람들이 많이 풀었다.


문자 리스트를 문자열로 변환하기

문제 설명

문자들이 담겨있는 배열 arr가 주어집니다. arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성해 주세요.
def solution(arr):
    answer = ''.join(arr)
    
    return answer

join 함수를 이용해서 너무 쉽게 풀 수 있었던 .. 더 짧게 쓰는 사람들은

def solution(arr):
    return ''.join(arr)

이렇게 풀어버린 .. ㄴㅇㄱ


문자열 곱하기

문제 설명

문자열 my_string과 정수 k가 주어질 때, my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.
def solution(my_string, k):
    answer = ''
    
    for i in range(k):
        answer += my_string
    
    return answer

내가 푼 풀이

def solution(my_string, k):
    return my_string*k

 

단순하게 생각하면 편하네요


더 크게 합치기

문제 설명

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.12 ⊕ 3 = 1233 ⊕ 12 = 312양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.
def solution(a, b):
    answer = '' 
    ab = str(a)+str(b)
    ba = str(b)+str(a)

    if (ab > ba or ab==ba):
        answer = ab
    else:
        answer = ba

    return int(answer)

저는 이렇게 길게 짰는데요 ...

def solution(a, b):
	return int(max(f"{a}{b}", f"{b}{a}"))

포맷팅, max함수 이용해서 한 줄로 ..


두 수의 연산값 비교하기

문제 설명

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.12 ⊕ 3 = 1233 ⊕ 12 = 312양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.단, a ⊕ b와 2 * a * b가 같으면 a ⊕ b를 return 합니다.
def solution(a, b):
    return max(int(str(a)+str(b)), 2*a*b)

방금 문제를 응용해서 풀어서 쉽게 성공

+ Recent posts