본문 바로가기
CS/알고리즘

[이코테] 구현 - 럭키 스트레이트

by 데브겸 2023. 1. 27.

오... 이상한 거에서 살짝 시간을 잡아먹긴했지만 그래도 풀었다

 

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: 문자열을 나눌 최대 횟수