#모든 원소들의 곱은 함수가 없기 때문에 직접 구해야 한다.
#다른 사람은 m = eval( )을 이용해서 문자열 수식을 만든 다음에 계산했다.
[내 풀이]
def solution(num_list):
gob = 1
for x in num_list:
gob = gob*x
hob = sum(num_list)
return 1 if gob < hob**2 else 0
[참고 풀이]
def solution(num_list):
s=sum(num_list)**2
m=eval('*'.join([str(n) for n in num_list]))
return 1 if s>m else 0
[내 풀이]
def solution(my_string, is_prefix):
return int(my_string[:len(is_prefix)]==is_prefix)
[참고 풀이]
- startswith 라는 함수가 있다. *endswith라는 함수도 있다.
def solution(my_string, is_prefix):
return int(my_string.startswith(is_prefix))
[내 풀이]
def solution(myString, pat):
replaced = ""
for x in myString:
if x == "A":
replaced += "B"
else:
replaced += "A"
return int(pat in replaced)
[참고 풀이]
- 임시 변수인 C를 도입해서 두 번 바뀌게 되는 현상을 방지 (replace만 사용)
- myString 보다 pat이 더 짧기 때문에 myString 보다 pat을 replace 해서 체크 하는 것이 더 효율적일 수도 있다는 의견(문제의 취지와는 다르지만, 결과는 같다)
def solution(myString, pat):
return int(pat in myString.replace('A', 'C').replace('B', 'A').replace('C', 'B'))
[내 풀이]
def solution(num_list):
odd = 0
even = 0
for i, x in enumerate(num_list):
if i%2 == 0:
odd += x
else:
even += x
return max(odd, even)
[참고 풀이]
- 리스트 규칙적으로 추출하기 : 슬라이싱 step 활용하기
def solution(num_list):
return max(sum(num_list[0: len(num_list): 2]), sum(num_list[1: len(num_list): 2]))
[내 풀이]
def solution(myString):
return ''.join("l" if x<"l" else x for x in myString)
[참고 풀이]
- 문자열 translate(table), table = str.maketrans(문자열1, 문자열2) 사용
def solution(myString):
return myString.translate(str.maketrans('abcdefghijk', 'lllllllllll'))
* 문자열 translate(table), table = str.maketrans(문자열1, 문자열2) 사용
hi = "Hello, World!"
table = str.maketrans('HWd', '123')
hi.translate(table)
[내 풀이]
- 0이 아닌 값이 나올때까지 for 루프를 돌려, 0이 아닌 값이 나오는 인덱스를 찾아 슬라이싱 하는 풀이
def solution(n_str):
for i in range(len(n_str)):
if n_str[i] != '0':
return n_str[i:]
[참고 풀이1]
- 문자열의 왼쪽에서 특정 값을 제거할 때: lstrip('문자') 함수 활용
def solution(n_str):
return n_str.lstrip('0')
[참고 풀이2]
- 떼야 할 값이 0인 것을 이용한 특수한 풀이
def solution(n_str):
return str(int(n_str))
[내 풀이]
def solution(arr, idx):
for i, x in enumerate(arr):
if i>=idx and x==1: return i
return -1
[참고 풀이]
- try-except: 구문 try에서 예외가 발생하면 except가 실행됨
- index(찾을 값, 시작 인덱스): 두번 째 인자는 시작 인덱스구나.
def solution(arr, idx):
try:
answer = arr.index(1, idx)
except:
answer = -1
return answer
[내 풀이]
def solution(arr):
for i in range(len(arr)):
for j in range(len(arr[i])):
if arr[i][j] != arr[j][i]:
return 0
else:
return 1
[참고 풀이]
- 모든 조건을 만족하는지 all()
- 하나라도 조건을 만족하는지 any()
def solution(arr):
return int(all(arr[i][j] == arr[j][i] for i in range(len(arr)) for j in range(len(arr))))
[내 풀이]
- split('x'): x 기준으로 나누기 때문에 xx 같이 나란히 나오면, x, '', x 로 인식해서 ''도 추가된다.
def solution(myString):
return sorted([x for x in myString.split('x') if x != ''])
[내 풀이]
- 이중 for문
def solution(n):
answer = []
for i in range(n):
row = []
for j in range(n):
if i==j:
row.append(1)
else:
row.append(0)
answer.append(row)
return answer
[참고 풀이]
- 리스트 컴프리헨션 안의 리스트 컴프리헨션
def solution(n):
return [[int(i==j) for i in range(n)] for j in range(n)]
[참고 풀이2]
- 초기화 한 번만 하고, 특정 값만 수정하는 방식 (이게 더 빠르다.)
def solution(n):
answer=[[0]*n for i in range(n)]
for i in range(n): answer[i][i]=1
return answer
파이썬 논리연산 : and, or
'알고리즘 문제풀이 > 프로그래머스 Lv0' 카테고리의 다른 글
[프로그래머스] 코딩테스트 기초 (0) | 2023.05.31 |
---|---|
[프로그래머스] 코딩테스트 입문 문제 풀이 (0) | 2023.05.21 |
[프로그래머스] 코딩테스트 입문 문제 풀이 (1) | 2023.05.19 |
[프로그래머스] 코딩테스트 입문 문제 풀이 (0) | 2023.05.16 |
댓글