BAEKJOON : 2941, 2292, 1712

Codren·2021년 6월 13일
0

No. 2941

1. Problem





2. My Solution

  • 단어의 개수를 먼저 저장하고 해당 크로아티아 문자 개수 * 길이만큼 빼고 문자 개수만큼 다시 더함
import sys

word = sys.stdin.readline().strip()

croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
count = len(word)

for i in croatia:
    if i in word:
        count -= word.count(i) * len(i) 
        count += word.count(i)
        word = word.replace(i,' ')
       
print(count)




3. Others' Solutions

  • 해당 크로아티아 문자를 하나의 문자로 치환하여 길이 계산
import sys

word = sys.stdin.readline().strip()

croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']

for i in croatia:
    if i in word:
        word = word.replace(i,'*')
       
print(len(word))




4. Learned

  • 문자열.replace('문자','바꿀문자') - replace 함수를 이용해서 문자열의 특정 요소 제거 가능




No. 2292

1. Problem




2. My Solution

  • 입력값이 1,000,000,000 일지라도 누적값, 6의 배수들이 누적합되므로 시간안에 계산 가능
import sys

n = int(sys.stdin.readline().strip())
level = 1
count = 1

if n == 1:
    print(count)
else:
    while(True):
        level += (6*count) 
        count += 1
        
        if n <= level:
            print(count)
            break




3. Others' Solutions

N = int(input())
room = 1
while N > 1: 
    N -= (6 * room)
    room += 1
print(room)




4. Learned

  • 시간 초과가 발생할 것 같아도 일단은 알고리즘을 구현해보자




No. 1712

1. Problem




2. My Solution

import sys

a,b,c = map(int,sys.stdin.readline().strip().split())

if b >= c:
    print(-1)
else:
    print((a // (c - b)) + 1)




3. Learned

  • 결과를 위한 식을 도출해내자

0개의 댓글