알고리즘 문제들 으악/백준

[python]8958번 내 풀이와 replace를 이용한 다른 풀이

빈나 2022. 3. 20. 16:47
반응형

oooxxx와 같은 문자열을 입력 받아 o에가 연속적으로 나올때 마다 점수가 1씩 누적해서 올라가는 문제.

나는 다음과 같이 풀었다.

num = int(input())
for n in range(num):
    score = 0
    s = 0
    result = input()
    for a in range(len(result)):
        if result[a] == "O":
            s+=1
            score += s
        else:
            s = 0
    print(score)

문자열 자리수마다 o인지 확인해서 o일때마다 점수에 누적해서 올리고, x나올때는 s값을 초기화시켜서 흐름을 끊었다.

문제를 제출하고 다른 사람들 풀이를 확인 할때 replace를 사용하는 것을 보았다.

 

num = int(input())
for n in range(num):
    score = 0
    result = input()
    result = result.replace("X"," ").split()#x를 공백으로,split을 공백기준으로 리스트로 변환!
    print(result)
    for a in result:
        for b in range(1,len(a)+1):
            score += b
    print(score)

2가지가 놀라웠는데 replace로 x를 없애면서 동시에 새로운 리스트로 바꾼것이 놀라웠고 또 변수 b가 1씩 늘어난다는 점을 이용해 간단하게 점수를 누적시켰다.

역시 많이 알아야 간단하게 풀 수 있는 것 같다

반응형