알고리즘

[CodeWars] Build a square - 7Kyu

또롱또 2024. 11. 30. 03:59
728x90

https://www.codewars.com/kata/59a96d71dbe3b06c0200009c

 

Codewars - Achieve mastery through coding practice and developer mentorship

A coding practice website for all programming levels – Join a community of over 3 million developers and improve your coding skills in over 55 programming languages!

www.codewars.com

 

 

첫 문제로는 간단한 별찍기 문제를 가져왔다. 문법을 알아가기에 좋아보인다.

 

string을 반환하라는 말이 직접적으로 없길래, 걍 print 하면 되는지 알고 했다가 낭패를 봤다.

def generate_shape(n):
    for _ in range(n):
        for __ in range(n):
            print("+", end='')
        print()

 

그냥 2중 for loop으로 별찍기 하듯이 찍어봤다. 다른 함수가 아직 뭐가있는지 제대로 적응이 안된다 파이썬은.

그런데 에러로 string을 반환하래서 다시 조금 변경했다.

def generate_shape(n):
    result = ''
    for _ in range(n):
        for __ in range(n):
            result += '+' 
        result += '\n'
    return result.strip()

 

모범답안:

def generateShape(integer):
    return '\n'.join('+' * integer for i in range(integer))
    
def generate_shape(n: int) -> str:
    return '\n'.join(['+' * n] * n)

 

일단 .join은 자바스크립트에서는 배열을 문자열로 변경할때 썼었는데, 여기서의 사용방법은 줄바꿈할때 사용하는거 같다. 

def generateShape(integer):
    return ('+' * integer)

print(generateShape(3))

 

실제로 이걸 출력하면 +++ 인데, 

def generateShape(integer):
    return '\n'.join('+' * integer)

print(generateShape(3))

 

이걸 출력하면 

+

+

+ 가 된다.

'\n'.join(['+' * n] * n)

 

이건 좀 대단한게 만약 n이 3이면 ['+' * n] * n =  [+++, +++, +++] 가 될 거고,

여기서 각 엘리먼트마다 줄바꿈을 해준다.

 

난 이게 정말 스마트한 방법이라 생각해서보니, clever를 제일 많이 받았다.

 

파이썬은 익숙하지가 않아서 아직 어렵다.

새로 배운점: 

.strip() 문자열내의 줄바꿈, 앞뒤의 공백을 제거
pass 빈 함수를 일단 임시로 뭔가 채워둘때 사용
'\n'.join() 문자열을 다중 행 형식으로 처리

 

728x90

'알고리즘' 카테고리의 다른 글

[CodeWars] Counting sheep... - 8Kyu  (1) 2024.12.04
[CodeWars] Count by X - 8Kyu  (0) 2024.11.30
알고리즘(JS) - BFS DFS  (0) 2022.06.28
알고리즘 에너그램  (0) 2022.06.28
백준 2839번 - 설탕 배달  (0) 2022.06.26