개발/🌸 EC.CREW

EC.CREW 2기 3차 팀 대항전

정소은 2022. 11. 28. 04:34

 

 

EC.CREW 2기 마지막 날 팀 대항전을 진행했다

팀 대항전에서 내가 푼 문제들

+ 집에 돌아와서 푼 문제들

 

 

 

 

# 2  약수 구하기

 

 

https://www.acmicpc.net/problem/2501

 

2501번: 약수 구하기

첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.

www.acmicpc.net

 

 

N, K = map(int,input().split())
numlist = []

for i in range(1,N+1):
    if( N%i == 0 ):
        numlist.append(i)
               
if len(numlist)<K:
    print("0")

else:
    print(numlist[K-1])

 

 

 

 

 

# 5  닉네임에 갓 붙이기

 

 

https://www.acmicpc.net/problem/13163

 

13163번: 닉네임에 갓 붙이기

첫 번째 줄에는 닉네임의 수 N(1 ≤ N ≤ 100)이 주어진다. 두 번째 줄부터 N개의 줄에는 음절 단위로 쪼갠 닉네임이 주어진다. 각 줄은 알파벳 소문자와 공백만으로 이루어지며, 쪼갠 닉네임의 총

www.acmicpc.net

 

 

 

N = int(input())

for i in range(N):
    nickname = list(input().split())
    nickname[0]="god"
    for j in range(len(nickname)):
        print(nickname[j],end='')
    print(" ")
    nickname.clear()

 

 

 

 

 

# 6  쉽게 푸는 문제

 

 

https://www.acmicpc.net/problem/1292

 

1292번: 쉽게 푸는 문제

첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다.

www.acmicpc.net

 

 

 

A,B = map(int,input().split())
i = 0
j = 0
total = 0

while True:
    if A - i <= 0:
        startnum = i
        startorder = startnum + (A-i) 
        break
    else:
        A -= i
        i+=1


while True:
    if B - j <= 0:
        endnum = j
        endorder = endnum + (B-j)
        break
        
    else:
        B -= j
        j += 1
        
for a in range(startnum, endnum+1):
    total += a * a

total = total - startnum*(startorder-1) - endnum*(endnum-endorder)
print(total)

 

엄청 비효율적인 느낌...

코드의 효율성을 그냥 느낌이 아니라 논리적인 근거를 들면서 따질 수 있는 경지가 되고 싶다

아직은 코드를 쓸 때 일단 돌아가기만 하면 오케이, 딱 떨어지는 것 같으면 좋고, 좀 길고 누가 봐도 굳이 저렇게..? 의 느낌이 들면 찝찝...

공부하쟈..!

 

 

 

 

여기서부터는 집에 돌아와서 푼 문제들

 

 

 

 

# 7  N번째 큰 수

 

 

https://www.acmicpc.net/problem/2693

 

2693번: N번째 큰 수

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 배열 A의 원소 10개가 공백으로 구분되어 주어진다. 이 원소는 1보다 크거나 같고, 1,000

www.acmicpc.net

 

 

N = int(input())

for i in range(N):
    numList = list(map(int,input().split()))
    numList.sort()
    print(numList[7])
    numList.clear()

 

... 딱 이 문제만을 위한 코드

numList[-a] : 뒤에서 a번째.   <-- 이걸로 바꿔야징..

 

 

 

 

# 8  수들의 합

 

 

https://www.acmicpc.net/problem/1789

 

1789번: 수들의 합

첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.

www.acmicpc.net

 

 

N = int(input())
num = 0
i = 1

while True:

    if N > 0:
        N -= i
        i += 1
        num += 1
        
    elif N < 0:
        num-=1
        N=0
        
    elif N == 0:
        print(num)
        break

 

 

 

 

 

이것으로 EC.CREW 2기 완료~~!!

나는 내가 한 선택에 대해서 설문지로 따지자면 항상 보통 ~ 조금 만족 정도였는데 

EC.CREW에 지원한 건 정말 두고두고 생각할 때마다 뿌듯할 정도로 매우 만족이다

사실 나는 조금, 아니 많이 게으르기도 하고 생각을 행동으로 옮기는 데에 시간이 많이 걸려서 프로젝트 같은 데에 도전하기가 쉽지 않은데

스터디 덕분에 꾸준히 코딩 공부를 하고 있고 얼마 전에는 프로젝트도 완성했다

우왕

 

그래서 사실 2기 활동이 끝난 게 엄청 아쉽다

하지만 3기도 냅다 지원할 거라서 뭐..히히

 

차근차근 코딩 실력이 늘고 있다

느리지만 이대로 가다보면 언젠가 능숙해지는 날이 올 거라 믿고 있고 기대하고 있다