-문제:https://www.acmicpc.net/problem/12904

 

풀이 없이 스스로 푼 문제 골드 level5문제 

 

-정답풀이: 

일정한 규칙으로 s를 t로 바꾸는 경우는 문제 그대로 s부터 시작하는 것이 아니라 결과물에서 규칙을 적용해서 s로 풀어나가야한다

t에서 s로 변하는 규칙을 생각해보면 다음과 같다

1. 끝자리가 'A'일 때 t에서 'A'빼기

2. 끝자리가 'B'일 때 t에서 'B'빼고 뒤집기 

 

뒤집는 건 메인 코드에 구현하면 코드가 복잡해질 것 같아 flip()이라는 함수를 정의 후 진행했다

True로 걸어 놓고, if문으로 break 구현하기

일단 길이가 같을 때 두 단어가 같은지 다른지 알 수 있으므로 먼저 길이를 확인하고 같다면 둘이 일치하는지 확인하고 1출력, 둘이 길이는 같은데 문자가 다르다면 0을 출력해주고 break를 하면 while문을 빠져나온다

 

길이가 같지 않을 때는 끝자리 수에 따라 진행해주면 된다

22번라인데 flip한 걸 새로 t에 넣어줘야하는데 처음에 그냥 flip(t)만 해서 뒤집은게 t에 저장이 안돼 틀렸었다 

def flip(a):
    b=[]
    for i in range(len(a)-1,-1,-1):
        b.append(a[i])
    return b
s=list(input())
t=list(input())
while True:
    if len(t)==len(s):
        if t==s:
            print(1)
            break
        elif t!=s:
            print(0)
            break
    
    if t[-1]=='A':
        del t[-1]
        
    elif t[-1]=='B':
        del t[-1]
        t=flip(t)

-문제:https://www.acmicpc.net/problem/14659

 

풀이 없이 답안 작성한 문제(30분)

단순하게 i번째 인덱스 값보다 큰 j(i부터 n)인덱스의 수를 구하면 되는 거라 생각했는데,

그게 아니라 예제 6을 보면 10이 6보다 커서 더 진행할 수 없는데 뒤에 6보다 작은 2,5,7이 있어서 그것까지 세서 틀렸다

그래서 자기보다 큰수를 만났을 때 break를 걸었더니 금방 해결됐다

 

-정답풀이: 

n=int(input())
s=list(map(int,input().split()))
result=[0]*n
for i in range(n):
    for j in range(i,n):
        if s[i]<s[j]:
            break
        elif s[i]>s[j]:
            result[i]+=1
print(max(result))

-틀린풀이: 

-문제: https://www.acmicpc.net/problem/1343

 

생각보다 쉬웠던 문제다.근데 너무 어렵게 생각해서 접근이 안되었던 문제

이전에도 그렇고, 특정 문자를 다른 문자로 치환할 때는 replace()이용하는 거 꼭 한번 생각해보기 

갯수 찾고, 그거를 문자로 치환하고 다시 연결하고,, 이렇게 복잡한 과정이 있을 때는 replace 이용하면 되지 않을까?하고 replace 한번 사용해보자

 

이렇게 작성하면 replace가 일어나지 않아 틀린 답이 출력된다(7/13)

data.replace('XXXX','AAAA')
data.replace('XX','BB')

 

-정답풀이: 

board=input()

board=board.replace('XXXX','AAAA')
board=board.replace('XX','BB')

if 'X' in board:
    print(-1)
else:
    print(board)

-문제:https://www.acmicpc.net/problem/1041

 

1041번: 주사위

첫째 줄에 N이 주어진다. 둘째 줄에 주사위에 쓰여 있는 수가 주어진다. 위의 그림에서 A, B, C, D, E, F에 쓰여 있는 수가 차례대로 주어진다. N은 1,000,000보다 작거나 같은 자연수이고, 쓰여 있는 수

www.acmicpc.net

 

열심히 한번 풀어봤지만 틀렸던 문제 

 

-정답풀이: 

n=int(input())
nums=list(map(int,input().split()))
sum=0
sumLists=[]
if n==1:
    nums=sorted(nums)
    for i in range(0,5):
        sum+=nums[i]
else:
    sumLists.append(min(nums[0],nums[5]))
    sumLists.append(min(nums[1],nums[4]))
    sumLists.append(min(nums[2],nums[3]))
    sumLists=sorted(sumLists)
    
    min1=sumLists[0]
    min2=sumLists[0]+sumLists[1]
    min3=sumLists[0]+sumLists[1]+sumLists[2]
    
    n3=4
    n2=4*(2*n-3)
    n1=(n-2)*(n-2)+4*(n-1)*(n-2)
    
    sum+=n1*min1
    sum+=n2*min2
    sum+=n3*min3
print(sum)

 

-틀린 풀이: 

700

 

+ Recent posts