하루에 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