[ 이것이 코딩테스트다 ] 32일차

안영우·2021년 2월 9일
0
post-thumbnail

📍 [ 문제 ] 백준 18406 - 럭키스트레이트

문제: 백준 18406

⚡️ 나의 풀이

이코테 책에 실린 문제지만 코드채점은 백준사이트에서 했다.
처음에 단순하게 입력조건 2개만 넣고 맞았다고 생각했는데 혹시 몰라 채점을 받아보니 오답판정을 받았다.

왜 그런가 곰곰이 생각하니 입력조건이 길어질 수 있는데, length 설정을 2로 설정했기 때문이다.

그리고 처음에 반복문 안에서 length의 범위를 설정했는데, 코드의 가독성이 떨어지고 뭔가 맞지 않는듯한 느낌이 들어 고민하다가 시각을 넓혀 밖에서 length를 선언했고, 정답 판정을 받았다.

어렵다고 생각하지 않은 문제였다.

'''
123402
7755
'''
n = int(input())
number = str(n)
length = (len(number) // 2) - 1
left = 0
right = 0

for i in range(len(number)):
    if i <= length:
        left = left + int(number[i])
    else:
        right = right + int(number[i])

if left == right:
    print('LUCKY')
else:
    print('READY')
👉🏽 LUCKY READY

📍 [ 문제 ] 문자열 재정렬

⚡️ 나의 풀이

이 문제는 저번 시계문제와 비슷한 느낌으로 풀 수 있다.

입력으로 주어진값을 str형으로 변환하면 각 자리수에 쉽게 접근할 수 있다. 숫자값은 나중에 int형으로 변환시켜주자.

그리고 isalpha(), isdigit()함수를 처음 배웠는데,
문자열내부의 값이 알파벳인지 숫자인지 판별해주는 함수다.

이를 사용하면 알파벳과 숫자로 나눌 수 있고 그 값을 토대로 알파벳은 append함수를, int는 number += int(i)를 해주면 된다.

'''
K1KA5CB7
AJKDLSI412K4JSJ9D
'''

string = input()
result = []
number = 0

for i in string:
    if i.isalpha():
        result.append(i)
    else:
        number = number + int(i)

result.sort()

if number != 0:
    result.append(str(number))

print(''.join(result))

👉🏽 ABCKK13
ADDIJJJKKLSS20
profile
YW_Tech

0개의 댓글