OX퀴즈
https://school.programmers.co.kr/learn/courses/30/lessons/120907
답:
더보기
def solution(quiz):
answer = []
for q in quiz:
new = q.split(" ")
if new[1] == "+" :
a = int(new[0]) + int(new[2])
if a == int(new[4]):
answer.append("O")
else:
answer.append("X")
if new[1] == "-" :
a = int(new[0]) - int(new[2])
if a == int(new[4]):
answer.append("O")
else:
answer.append("X")
return answer
문제 분석 및 해석
'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz
수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return
*** + - 연산자만 존재함
풀이.
1) split으로 공백 기준으로 나누어 새로운 list에 담음
2) 이후 index 1 에 담긴 연산자를 확인
3) 0 / 2번 인덱스를 계산하고
4) 해당 값이 유효한지 확인하여 O X를 넣도록 하였음
캐릭터의 좌표
이차원배열, 너비탐색문제!
https://school.programmers.co.kr/learn/courses/30/lessons/120861
답:
더보기
def solution(keyinput, board):
answer = [0, 0]
가로제한 = board[0]//2 #몫
세로제한 = board[1]//2
for key in keyinput:
if key == "left" and answer[0]-1 >= - 가로제한:
answer[0] -= 1
elif key == "right" and answer[0]+1 <= 가로제한:
answer[0] += 1
elif key == "up" and answer[1]+1 <= 세로제한:
answer[1] += 1
elif key == "down" and answer[1]-1 >= -세로제한:
answer[1] -= 1
return answer
문제 분석 및 해석
up + down - [0, 뒤]
left - right + [앞, 0]
2차원 배열을 떠올리자!
조건
1. 캐릭터는 항상 [0,0에서 시작함]
2. board 크기가 주어짐, [가로 크기, 세로 크기] 형태, 1<= board <=99 크기
3. board의 크기를 벗어난 방향키 입력은 무시
4. ≤ board[0] ≤ 99
풀이
for문 첫줄에서 가로제한과 세로 제한을 먼저 점검해보려 했으나,
현재 더해져야하는 내용에 대한 오류가 생겨서 각각의 if문에서 제한 여부를 체크하도록 변경하였다.
>> 처음 풀이
def solution(keyinput, board):
answer = [0, 0]
가로제한 = board[0]//2
세로제한 = board[1]//2
for key in keyinput:
if 가로제한 <= answer[0] or 세로제한 <= answer[1]:
pass
else:
if "left": ...
>> 변경한 풀이
def solution(keyinput, board):
answer = [0, 0]
가로제한 = board[0]//2 #몫
세로제한 = board[1]//2
for key in keyinput:
if key == "left" and answer[0]-1 >= - 가로제한:
answer[0] -= 1
'알고리즘 풀이' 카테고리의 다른 글
[알고리즘] 프로그래머스 | 두 정수 사이의 합, 핸드폰 번호 가리기 (0) | 2023.08.03 |
---|---|
[알고리즘] 프로그래머스 | 평행 (2) | 2023.08.02 |
[algorithm] 페어 - 프로그래머스: 폰켓몬, 전화번호 목록 (0) | 2023.06.02 |
[algorithm] 페어 - 프로그래머스: 2016년 (0) | 2023.06.01 |
[algorithm] 페어 - 프로그래머스: 피로도 (0) | 2023.05.31 |