728x90
[프로그래머스][Python][Lv0] 코딩테스트 입문 (5)
너무 어려웠던 문제들 😢😢
1. 겹치는 선분의 길이
선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요.
lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다.
선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다.
다른 사람의 풀이
def solution(lines):
sets = [set(range(min(l), max(l))) for l in lines]
return len(sets[0] & sets[1] | sets[0] & sets[2] | sets[1] & sets[2])
- lines 배열의 최소 최대값을 범위로 두어 집합으로 둔다.
- & 연산자로 교집합을 구한다.
- 겹치는 선분들을 | 연산자로 합집합을 구해 총 길이(len)를 반환한다.
2. 안전 지대
다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다.
지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다. 지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요.
def solution(board):
n = len(board)
danger = set()
for i, row in enumerate(board):
for j, x in enumerate(row):
if not x:
continue
danger.update((i+di, j+dj) for di in [-1,0,1] for dj in [-1, 0, 1])
return n*n - sum(0 <= i < n and 0 <= j < n for i, j in danger)
다시 풀어봐야 할 듯 😂
3. 평행
def solution(dots):
[[x1, y1], [x2, y2], [x3, y3], [x4, y4]] = dots
# 기울기 = |(y2 - y1) / (x2 - x1)|
g12 = abs((y2-y1)/(x2-x1))
g34 = abs((y4-y3)/(x4-x3))
g23 = abs((y3-y2)/(x3-x2))
g14 = abs((y4-y1)/(x4-x1))
return 1 if g12 == g34 or g23 == g14 else 0
- 직선의 기울기가 같으면 평행한다. dots의 각 요소들을 변수로 할당
- 기울기를 구하여 하나라도 기울기가 같으면 1을 반환하고 다르면 0을 반환한다.
4. 옹알이 (1)
import re
def solution(babbling):
result = 0
for _ in babbling:
a = re.sub(r'aya|ye|woo|ma','',_)
if len(a) == 0:
result += 1
return result
- 정규 표현식을 이용한 방법, 정규표현식 문법중에서 | 를 사용하면 앞뒤 패턴을 or 조건으로 지정한다.
- re.sub 함수를 사용하여 'aya', 'ye', 'woo', 'ma' 가 문자열에 있으면 지운다.
- 만약 문자열이 공백이라면 옹알이로 'aya','ye','woo','ma'가 조합된 문자이기때문에 결과에 1을 더한다.
반응형
'🧾 Codetest > 프로그래머스' 카테고리의 다른 글
[프로그래머스][SQL][Lv02] 조건에 맞는 사원 정보 조회하기(서브쿼리) (0) | 2024.03.13 |
---|---|
[프로그래머스][SQL][Lv02] 조건에 맞는 개발자 찾기(&) (0) | 2024.03.08 |
[프로그래머스][Python][Lv0] 코딩테스트 입문 (4) (1) | 2023.09.08 |
[프로그래머스][Python][Lv0] 코딩테스트 입문 (3) (0) | 2023.09.05 |
[프로그래머스][Python][Lv0] 코딩테스트 입문 (2) (0) | 2023.09.04 |