본문 바로가기

WINK-(Web & App)/개인 스터디 & 프로젝트

알고리즘 2인 스터디 #1주차 - 이총명

반응형

브론즈1~실버2 랜덤디펜스
15947 아기 석환 뚜루루 뚜루 , 브론즈 1

문제 설명 : 같은 가사를 반복해서 부르는데 반복할 때마다 “tururu”와 “turu”에 “ru”를 한 번씩 더 추가한다.

입력에서 n이 가사에서 n번째 단어를 의미한다.

 

풀이 : 너무 쉬워서 풀이할게 없네요.. 그냥 f스트링 사용해봤고 index in [2, 3, 6, 7, 10, 11]: 이런식으로

코드의 효율성과 직관성을 높여 봤습니다

li = [
    "baby",
    "sukhwan",
    "tururu",
    "turu",
    "very",
    "cute",
    "tururu",
    "turu",
    "in",
    "bed",
    "tururu",
    "turu",
    "baby",
    "sukhwan",
]  # 14개임

n = int(input())
n = n - 1
cycle = n // 14  # cycle 0부터 시작
index = n - cycle * 14
a = 2 + cycle
b = 1 + cycle

if index in [2, 3, 6, 7, 10, 11]:
    li[index] = li[index] + ("ru" * cycle)
    if len(li[index]) >= 12:
        if index == 2 or index == 6 or index == 10:
            print(f"tu+ru*{a}")
        elif index == 3 or index == 7 or index == 11:
            print(f"tu+ru*{b}")
    elif len(li[index]) < 12:
        print(li[index])
else:
    print(li[index])


1032 명령 프롬프트 , 브론즈 1

설명 : n개의 입력이 주어졌을때 n개의 문자열의 i 번째 문자가 서로 다 같으면 그대로, 다른게 하나라도 있으면 ?로 출력하는 느낌쓰

풀이 : 이것도 너무 쉬웠음..

import sys

n = int(sys.stdin.readline())
data = [sys.stdin.readline().strip() for i in range(n)]
output = []
for i in range(len(data[0])):
    character = []
    for k in range(n):
        character.append(data[k][i])
    if character.count(character[0]) == len(character):
        output.append(character[0])
    else:
        output.append("?")
print("".join(output))

10989 , 수 정렬하기 3 , 브론즈 1

설명 : 설명할것도 없다.

 

풀이 : 처음에 보면 뭐지? 개쉬워보이는데? 할 수 있지만 이 문제의 함정은 메모리 제한에 있다..

브 1치고는 꽤 까다롭다고 느꼈고 플2 지존 박성훈님께서 알려주신 계수 정렬을 이용해 해결했다.
(https://computer-science-student.tistory.com/58)

 

[알고리즘] 계수 정렬(Counting Sort)

계수 정렬(Counting Sort) 계수 정렬은 특정한 조건이 부합될 때만 사용할 수 있지만 데이터 수가 많더라도 중복된 값이 많이 분포돼있는 배열을 정렬할 때 효과적이고 빠른 정렬 알고리즘이다. 최

computer-science-student.tistory.com

import sys

n = int(sys.stdin.readline())

c = []
for i in range(10000):
    c.append(0)

for i in range(n):
    s = list(map(int,sys.stdin.readline().split()) )
    c[s[0]-1] += 1
for i in range(10000):
    for m in range(c[i]):
        print(i+1)
반응형