코딩테스트 연습 5일차

김채원·2023년 2월 1일
0

coding_test

목록 보기
5/11

Lv.1

문자열 내림차순으로 배치하기

def solution(s):
    big = []
    small = []
    
    for item in s:
        if item.isupper():
            big.append(item)
        else:
            small.append(item)
    big.sort(reverse=True)
    small.sort(reverse=True)
    
    answer = "".join(small)
    answer += "".join(big)
    
    return answer

위에꺼 누가봐도 삽질같은 느낌이.....

def solution(s):
    return ''.join(sorted(s, reverse=True))

sorted는 정렬한 새 리스트를 반환하니까...먹힌다...str도 리스트로 침...그러나 sort 문법으론 그게 안 된다....ㅠㅠ

약수의 개수와 덧셈

모든 제곱수의 약수는 홀수!!!
ex) 5*5 = 25 (제곱수)
25의 약수는 1,5,25
num^(1/2) 한거임

def solution(left, right):
    answer = 0
    cnt = 0
    for num in range(left,right+1):
        if int(num**0.5) == num**0.5:
            answer -= num
        else:
            answer += num
        
    return answer

if - else문이니 삼항 연산자 가능....이럴수가

def solution(left, right):
    answer = 0
    for i in range(left, right+1):
        answer = answer - i if int(i**0.5) == i**0.5 else answer + i
    return answer

문자열 다루기 기본

숫자인지 확인하는 함수 .isdigit()

def solution(s):
    
    if len(s) in [4,6]:
        if s.isdigit():
            answer = True
        else:
            answer = False
    else:
        answer = False
        
    return answer

부족한 금액 계산하기

더러워....

def solution(price, money, count):
    total_price = 0
    
    for i in range(1,count+1):
        total_price += price * i
        
    if (money - total_price) <= 0:
        return abs(money - total_price)
    else:
        return 0

내 코드를 진짜 짧고 깔끔하게 줄일 수 있구나...


def solution(price, money, count):
    return abs(min(money - sum([price*i for i in range(1,count+1)]),0))

미친 이건 뭐지? 등차수열의 합? 산술평균? 막 이렇게 댓글 달려있다...이건 아직 내가 도달하기에 어려운 영역이다... 이해도 안됨 하나씩 풀어봐야할듯함;;

def solution(price, money, count):
    return max(0,price*(count+1)*count//2-money)

행렬의 덧셈

정녕 이게 최선일까...?ㅠㅠ
길이 맞춰서 그냥 덧셈하기가...?

def solution(arr1, arr2):
    for x in range(len(arr1)):
        for y in range(len(arr1[0])):
            arr1[x][y] += arr2[x][y]
    return arr1

zip으로 풀려다가 움...하고 위처럼 고쳤는데...
내가 쓰고 싶었던걸 멋있게...아름답다...언패킹...저 언패킹은 한 달전에 써먹고 고대로~ 까먹음;;;

def sumMatrix(A,B):
    return [list(map(sum, zip(*x))) for x in zip(A, B)]

혹은 이렇게...[] <한 번 더 쓸 생각을 못해갖고 막혔음... 이쪽이 위보단 이해가 빠를듯 담엔 이렇게 풀어보자.

def sumMatrix(A,B):
    answer = [[c + d for c, d in zip(a, b)] for a, b in zip(A,B)]
    return answer

직사각형 별찍기

a, b = map(int, input().split(' '))

for _ in range(b):
    print("*"*a)
        

오...이런것도 먹히는구나 싶었음...신기하다.
근데 이러면 마지막에 공백 추가 될텐데 정답인정이 되나?

a, b = map(int, input().split(' '))
answer = ('*'*a +'\n')*b
print(answer)
profile
잡다한 공부 기록용

0개의 댓글