오... 이상한 거에서 살짝 시간을 잡아먹긴했지만 그래도 풀었다
1. 내 풀이
n = input()
point = len(n) // 2
front = 0
back = 0
for i in range(point):
front += int(n[i])
back += int(n[-i-1])
if front == back:
print('LUCKY')
else:
print('READY')
1-1. 풀이 도중 생각
1) split()으로 내가 원하는 인덱스 지점에서 쪼개는 방법이 없을까?
2) 쪼개서 각각을 리스트에 넣는 방법도 있겠지만 그건 모르겠고, 문자열 인덱싱으로 반복적으로 더하는 것으로 짜야지
2. 정답
n = input()
length = len(n)
summary = 0
for i in range(length//2):
summary += int(n[i])
for i in range(length //2, length):
summary -= int(n[i])
if summary == 0:
print("LUCKY")
else:
print("READY")
나는 front와 back을 각각 계산해서 둘을 직접 비교하는 방법을 / 정답은 front만 계산하고, 그 front에서 뒤에 반을 빼는 방식을 택했다.
내 풀이는 back이라는 변수를 하나 더 선언해야 하는 대신 for문을 하나 더 쓸 필요가 없고,
정답은 변수 하나를 더 만들지 않아도 되는 대신 조건이 다른 for문을 두 개 만들어야 한다.
3. 새로 공부하게 된 것 or 새삼 다시 알게 된 것
0) 파이썬 인덱싱의 시작은 0, 뒤에서부터 시작은 -1. 즉, i와 -i-1... (계속 -i로 돌리는 바람에 삽질 좀 함)
1) range(start, end, step)이라는 것을 활용하여 start 자체를 halfpoint로 잡는 테크닉. end, step 파라미터가 있다는 것 상기
2) split()에는 원하는 인덱스에서 자르는 기능은 없고 separator, maxsplit만 있음.
- separtor: 문자열을 나눌 때 무엇을 기준으로 나눌 것이냐 (whitespace, ',' 등등)
- maxsplit: 문자열을 나눌 최대 횟수
'CS > 알고리즘' 카테고리의 다른 글
[이코테] DFS, BFS - 음료수 얼려먹기 (0) | 2023.02.02 |
---|---|
[이코테] 구현 - 문자열 압축 (0) | 2023.01.29 |
[이코테] 구현 - 문자열 재정렬 (0) | 2023.01.28 |
[이코테] 구현 - 왕실의 나이트 (0) | 2023.01.26 |
[이코테] 구현 - 시각 (feat. or에 대한 탐구) (0) | 2023.01.26 |