프로그래머스 OX 퀴즈
2022. 12. 19. 22:32ㆍPython/Algorithm
728x90
내가 접근했었던 접근법
(접근법은 좋았던거같다. 하지만 약 1시간째 이 수많은 배열들을어떻게 처리해야하나...? 하고 고민하는사이 지나간것 같다.)
def solution(quiz):
#내가 해야할것
#배열을 잘라 a, b, c, d, e 로 분해하는데
#이때 a숫자 b수식 c숫자 d등호 e답안으로 분해한다
#공백을 기준으로 분해를 하여 5개로 만든후에
#이때 a 수식 c가 e일경우
#O를
#아닐경우 X를 반환하게 만든다.
a = ', '.join(map(str, quiz))
a2 = a.split(', ')
# print(a2)
a3 = ' '.join(a2)
# a4[0] 첫번째숫자
# a4[1] 수식
# a4[2] 숫자
# a4[3] 등호
# a4[4] 답
#a[1]이 - 일때는 숫자를 빼고
#a[1]이 + 일때는 숫자를 더해서
#a4[0]과 a4[2]를 더하거나 뺀 값이 a4[4]와 일치할 경우 O 아니면 X를 반환
a4 = a3.split(' ')
a5 = ''.join(a3) #하나씩 쪼개기
for i in range(0, len(a4)):
print(a4[i])
if a4[1] == "-":
result = int(a4[i]) - int(a4[i+5])
print(result)
#매 [0]부터 5씩 더하면 첫 숫자
#매 [1]부터 5씩 더하면 수식
#매 [2]부터 5씩 더하면 두번째 숫자
#매 [3]부터 5씩 더하면 등호
#매 [4]부터 5씩 더하면 답안
# if a4[1] == '-':
# result = int(a4[1]) - int(a4[3])
# elif a4[1] == '+':
# result = int(a4[1]) + int(a4[3])
# print(result)
정해놓은 시간 (1시간 30분)이 지나서 나와 가장 비슷하게 생각한 답안을 찾아보았다.
def solution(quiz):
answer = []
#답은 빈 리스트로 선언해주고
for i in quiz:
#첫번째 for문은 quiz의 길이만큼 도는데
a = i.split("=")
#이때 a는 =를 기준으로 자른 i들을 담는다
for j in range(len(a)):
#두번째 for문은 0부터 a의 길이(여기선 언제나 2)만큼 돈다.
#이때 a[0]은 등호 전까지의 수식이며
#a[1]은 식의 답이다.
#왼쪽의 값은 첫번째 loop에서
#3 - 4를 eval 내장함수를 통해 string도 계산하여 -1을 얻고
#오른쪽의 값은 첫번째 loop에서
#a[len(a)-1] 은 a[1]이다. (리스트는 0부터 세기때문에)
#그리고 다시 이 값 -1과 a[1]=-3을 비교하여 맞으면 O를 answer에 삽입후 if문을 빠져나와
#다음 loop을 돈다.
if eval(a[0]) == eval(a[len(a)-1]):
answer.append("O")
break
else:
answer.append("X")
break
return answer
quiz = ["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"]
solution(quiz)
배운것
eval()
매개변수로 받은 식 (expression) 을 문자열로 받아서, 실행하는 함수
eval('수식',globals=None, locals=None)
'수식'
- 여기에 문자열 형태로 표현식[ ex) 1+1 ]을 입력받을수 있음(필요 값)
'globals '
- 선택적으로 쓰며, 사용하는 경우 변수 즉 값 형태의 딕셔너리를 사용
'locals'
- 선택적으로 쓰며, 모든 매핑 객체를 사용할 수 있음.
결론 : 더 쉬운걸 풀어보자
'Python > Algorithm' 카테고리의 다른 글
이진탐색, 순차탐색, 재귀함수 (TIL과 연결) (0) | 2022.12.28 |
---|---|
문자열 뒤집기 (0) | 2022.12.18 |
배열 n개로 쪼개기 (0) | 2022.12.18 |
프로그래머스 LV.0 로그인 성공? (0) | 2022.11.29 |
Python - Algorithm 코드 전개순서 최댓값 찾기, 알파벳 빈도수 찾기 (0) | 2022.11.22 |