[프로그래머스 Python] 코딩테스트 입문 Day 21 - 문자열, 사칙연산, 시뮬레이션, 2차원배열, 수학, 배열
1. 숨어있는 숫자의 덧셈 (2)
문자열 my_string
이 매개변수로 주어집니다. my_string
은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string
안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
my_string
의 길이 ≤ 1,000 - 1 ≤
my_string
안의 자연수 ≤ 1000 - 연속된 수는 하나의 숫자로 간주합니다.
- 000123과 같이 0이 선행하는 경우는 없습니다.
- 문자열에 자연수가 없는 경우 0을 return 해주세요.
코드 작성
def solution(my_string):
answer = ''
# 알파벳 여부 판단
for s in my_string:
if s.isalpha():
answer += ' '
else:
answer += s
return sum([int(n) for n in answer.split()])
2. 안전지대
다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다.
지뢰는 2차원 배열 board에 1로 표시되어 있고 board
에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다.
지뢰가 매설된 지역의 지도 board
가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요.
제한사항
board
는 n * n 배열입니다.- 1 ≤ n ≤ 100
- 지뢰는 1로 표시되어 있습니다.
board
에는 지뢰가 있는 지역 1과 지뢰가 없는 지역 0만 존재합니다.
코드 작성
def solution(board):
n = len(board)
# 좌, 우, 상, 하에 여유 여백 추가
b = [[0 for i in range(n+2)] for j in range(n+2)]
m = len(b)
new_b = []
# 폭탄 심기
for i in range(n):
for j in range(n):
if board[i][j] == 1:
for k in range(i, i+3):
for h in range(j, j+3):
b[k][h] = 1
# 정렬 다시 재정렬
for n in b[1:-1]:
new_b.append(n[1:-1])
# 정답값
answer = 0
for i in range(len(new_b)):
for j in range(len(new_b)):
if new_b[i][j] == 0:
answer += 1
return answer
3. 삼각형의 완성조건 (2)
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides
이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
sides
의 원소는 자연수입니다.sides
의 길이는 2입니다.- 1 ≤
sides
의 원소 ≤ 1,000
코드 작성
def solution(sides):
answer_list = []
# 가장 긴 변의 길이가 sides 리스트 내에 있는 경우
max_length = max(sides)
min_length = min(sides)
new_length = list(range(1, max_length+1))
for n in new_length:
if min_length + n > max_length and n <= max_length:
answer_list.append(n)
# 가장 긴 변의 길이를 만드는 경우
total_length = sum(sides)
answer_list.extend(list(range(max_length+1, total_length)))
return len(set(answer_list))
4. 외계어 사전
PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 spell
과 외계어 사전 dic
이 매개변수로 주어집니다. spell
에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic
에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요.
제한사항
spell
과dic
의 원소는 알파벳 소문자로만 이루어져있습니다.- 2 ≤
spell
의 크기 ≤ 10 spell
의 원소의 길이는 1입니다.- 1 ≤
dic
의 크기 ≤ 10 - 1 ≤
dic
의 원소의 길이 ≤ 10 spell
의 원소를 모두 사용해 단어를 만들어야 합니다.spell
의 원소를 모두 사용해 만들 수 있는 단어는dic
에 두 개 이상 존재하지 않습니다.dic
과spell
모두 중복된 원소를 갖지 않습니다.
코드 작성
def solution(spell, dic):
for d in dic:
if sorted(spell) == sorted(d):
return 1
return 2
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기