티스토리 뷰
코드카타
- 접미사인지 확인하기
문제 설명
어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string과 is_suffix가 주어질 때, is_suffix가 my_string의 접미사라면 1을, 아니면 0을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 100
- 1 ≤ is_suffix의 길이 ≤ 100
- my_string과 is_suffix는 영소문자로만 이루어져 있습니다.
입출력 예 설명
입출력 예 #1
- 예제 1번에서 is_suffix가 my_string의 접미사이기 때문에 1을 return 합니다.
입출력 예 #2
- 예제 2번에서 is_suffix가 my_string의 접미사가 아니기 때문에 0을 return 합니다.
입출력 예 #3
- 예제 3번에서 is_suffix가 my_string의 접미사가 아니기 때문에 0을 return 합니다.
입출력 예 #4
- 예제 4번에서 is_suffix가 my_string의 접미사가 아니기 때문에 0을 return 합니다.
def solution(my_string, is_suffix):
if my_string.endswith(is_suffix):
return 1
else:
return 0
- 정수를 나선형으로 계산하기
문제 해결을 위해, 나선형으로 배열을 채우는 로직을 구현해야 한다 각 변을 돌 때마다 방향을 바꾸고, 이미 채워진 칸이나 배열의 경계에 도달하면 방향을 바꿔야 한다 방향은 오른쪽, 아래, 왼쪽, 위 순으로 진행한다
def solution(n):
# n x n 크기의 2차원 배열 초기화
answer = [[0] * n for _ in range(n)]
x, y = 0, 0 # 시작 위치
num = 1 # 채워넣을 숫자
dx = [0, 1, 0, -1] # x 방향 이동 (오른쪽, 아래, 왼쪽, 위)
dy = [1, 0, -1, 0] # y 방향 이동 (오른쪽, 아래, 왼쪽, 위)
direction = 0 # 시작 방향 (0: 오른쪽, 1: 아래, 2: 왼쪽, 3: 위)
for i in range(n * n):
answer[x][y] = num # 현재 위치에 숫자 채우기
num += 1 # 다음 숫자로 업데이트
# 다음 위치 계산
nx = x + dx[direction]
ny = y + dy[direction]
# 다음 위치가 배열 범위 내이고, 아직 채워지지 않았다면 위치 업데이트
if 0 <= nx < n and 0 <= ny < n and answer[nx][ny] == 0:
x, y = nx, ny
else:
# 방향 전환 (오른쪽 -> 아래 -> 왼쪽 -> 위 -> 오른쪽 ...)
direction = (direction + 1) % 4
x += dx[direction]
y += dy[direction]
return answer
이 코드는 주어진 n에 대해 n x n 크기의 배열을 나선형으로 채워넣는 로직을 구현한다 각 단계에서 현재 방향으로 이동할 수 있는지 확인하고 이동할 수 없다면 방향을 시계 방향으로 바꿔 다시 이동을 시도한다 모든 칸이 채워질 때까지 이 과정을 반복한다
'내일배움캠프 개발자과정 > TIL' 카테고리의 다른 글
내일배움캠프 51일차 TIL (1) | 2024.04.25 |
---|---|
내일배움캠프 50일차 TIL (0) | 2024.04.24 |
내일배움캠프 48일차 TIL (0) | 2024.04.22 |
내일배움캠프 47일차 TIL (0) | 2024.04.21 |
내일배움캠프 46일차 TIL (0) | 2024.04.18 |