https://www.acmicpc.net/problem/1100
<조건>
<알고리즘>
2차원 리스트로 입력받아서 인덱스가 짝수일 때는 짝수칸 위에 F가 올라간 경우, 인덱스가 홀수 일 때는 홀수 칸 위에 F가 올라간 경우를 샌다.
<코드>
#입력
chess_board=[]
for i in range(8):
b=input()
board=[]
for i in b: #문자열 토큰화
board.append(i)
chess_board.append(board)
#연산
count=0
for i in range(8):
if i%2==0: #인덱스가 짝수일 때
for j in range(8):
if j%2==0 and chess_board[i][j]=='F':
count+=1
else:
for j in range(8):
if j%2!=0 and chess_board[i][j]=='F':
count+=1
#출력
print(count)
이번 문제는 입력이 굉장히 귀찮은 문제였다. 그래서 처음에 그냥 2개로 놓고 풀었다가 잘못되었다는 걸 뒤늦게 깨달았다.
2차원 리스트를 사용하여 list[i][j]가 있을 때 출력 순서 = i, list[i][j], j이다. 무슨 문제인지 알아보시겠나요? 음~~
바로 j의 출력이 이상하다. 인덱스가 8x8이라서 맨 끝 출력이 0101이 아니라 012..7까지 나와야되는데 0101만 나오는 것! 후후.. 이상하다는 걸 알아차리지 못하고 프린트 해보니까 14줄이 문제였다.
<eval 함수>
이번에도 문제풀고 백준 내 풀이를 봤는데 내가 20줄(주석제외)로 푼 걸 한줄만에 푸는 낫닝겐 분들이 계셨다. 어우.. 보니까 eval 함수를 많이 쓰셨는데 eval? E발? 이발?
그래서 알아보는 이발 함수~
https://docs.python.org/ko/3/library/functions.html#eval
이발 함수는 문자열로 식을 받아서 실행하는 함수다. 요런 식으로.
사실 그동안 문제를 풀면서 여러 줄로 입력받아야 하는 값을 한줄의 코드로 해결할 순 없을까하는 고민을 했다. 이번 문제를 풀면서 그 고민을 했고 낫닝겐님들의 코드를 보고 해결했다..
비교 예시가 그리 적절하진 않지만, for문을 쓰지 않아도 입력받을 수 있다는 걸 알아냈다! 다만, eval()함수가 컴퓨터 보안 상에는 위험하여 사용하지 않는 것이 좋다고 한다.
오늘의 백준 끗~
'python > 백준_프로그래머스' 카테고리의 다른 글
[프로그래머스] 완전 탐색-모음 사전. 근데 이제 수학을 곁들인 (0) | 2023.09.17 |
---|---|
[프로그래머스] 해시-의상 (python) 눈물나는 삽질쇼 (0) | 2023.09.05 |
[백준 2039번] 일곱 난쟁이 python과 combinations (0) | 2022.02.03 |
[백준 1026번] 보물 python과 리스트 정리 (0) | 2022.02.02 |
[백준 11047번] 동전0(그리디 알고리즘) python (0) | 2022.01.05 |