알고리즘 경진대회

BABY CAT·2022년 10월 11일
0

GwangJu AI Academy

목록 보기
4/6

GJ AI Academy 알고리즘 경진대회 10월11일~10월15일
팀 대회다. 최종적으로 팀 점수를 합산한다.

1일차

몇일 동안 프로그래머스 사이트에서 기업 코딩 문제를 풀면서 준비했다.
한문제에 몇 시간씩 쓴 문제가 많았다. 그래도 결국 대부분 풀었다.
그래서 오히려 자신이 있었는데 1일차 문제가 엄청 어려웠다.
프로그래머스 문제는 시간은 엄청 썼지만 차분히 단계적으로 풀어나가면
분명 풀렸는데 1일차 문제는 그냥 손을 못대는 문제가 많았다.

A=int(input())
B=int(input())
import math
res=[]
if A%2==0 : #짝수자릿수면     # A는2이상
    for i in range(1,10):  # 1부터9까지 첫자릿수 int
        if i+B < 10 : 
            ns = str(i)+str(i+B)
            res.append(ns*int(A/2))
        elif (i-B) == 0 :
            ns = str(i)+str(0)
            res.append(ns*int(A/2))
        elif (i-B) > 0 :
            ns = str(i)+str(i-B)
            res.append(ns*int(A/2))  
            
elif A==9:
    for i in range(1,10):  # 1부터9까지 첫자릿수 int
        if i+B < 10 : 
            ns = str(i) 
            ns2 = str(i+B)+str(i) 
            ns3 = ns+ns2 * (math.ceil(A/3)+1)  
            res.append(ns3)
        elif (i-B) == 0 :
            ns = str(i)
            ns2 = str(0)+str(i)
            ns3 = ns+ns2 * (math.ceil(A/3)+1)
            res.append(ns3)
        elif (i-B) > 0 :
            ns = str(i)
            ns2 = str(i-B)+str(i)
            ns3 = ns+ns2 * (math.ceil(A/3)+1)
            res.append(ns3)

elif  (A%2) == 1 : #홀수자릿수면  # A는2이상 = 3부터
    for i in range(1,10):  # 1부터9까지 첫자릿수 int
        if i+B < 10 : 
            ns = str(i) 
            ns2 = str(i+B)+str(i) 
            ns3 = ns+ns2 * math.ceil(A/3)  
            res.append(ns3)
        elif (i-B) == 0 :
            ns = str(i)
            ns2 = str(0)+str(i)
            ns3 = ns+ns2 * math.ceil(A/3) 
            res.append(ns3)
        elif (i-B) > 0 :
            ns = str(i)
            ns2 = str(i-B)+str(i)
            ns3 = ns+ns2 * math.ceil(A/3) 
            res.append(ns3)
result=""
for i in res:
    result+=i+" "
print(result[0:-1])

100점은 못 맞아도 이렇게 풀어나가면 풀긴하는데

난 4문제를 풀었다 100점 60점 40점 80점으로 내가 올린 점수는 280점.
('울타리'문제는 연습문제)

2일차

2일차에는 혼자 풀었다.
보면 우리 js_b반은 이런 거에 다 관심이 없다.
저번 캐글 대회랑 똑같다. ai반이 너무 잘해서 그런지, 코딩 문제 푸는 게 도움이 안 된다고 생각하는지 나랑은 생각이 다르다.
난 그냥 재밌으니까 혼자서 풀었다.
1일차에는 문제가 어려웠지만 2일차부터는 쉬운 문제가 많이 나왔다.


ii=input().split()
at=ii[0]
bs=ii[1]
#at="12"
#bs="200"
na = int(at)
nb = int(bs)
ttt=["3","6","9"]
count=0
for i in range(na,nb+1): # i int
    if i % 3 == 0:
        #print(i)
        count+=1
    else:
        for j in str(i):
            if j in ttt:
                count+=1
                #print(i)
print(count)
#print(str(count))

3일차

포기하는 사람들이 많아서 등수가 자꾸 오른다.
그러고 보니 입상을 9팀이 하고 내 아래로는 대부분 포기를 해서 문제를 나 혼자서
풀고 코드 팀이랑 코드 공유만 해도 최소 장려상은 탈 것 같았다.
그래서 솔플 같은 팀전이 시작되었다.
3일차에는 학교에서 문제를 6문제를 풀고 한 문제는 팀원이 풀었다.
3문제가 남았는데 손을 그냥 못 대는 문제..
구글링을 작정하고 하니까 코드가 자꾸 나왔다.
10문제 전부 100점을 받아버렸다.
다른 팀이 1일차에 몇 분 만에 어려운 문제, 두 문제 풀어버리고 그런게 다 구글링이였나?
알고 보니 코드 확인할테니 이런식으로 작정하고 구글링 복붙하지말라고 하셨단다.
이제 안함. ㅇㅅㅇ;



4일차

이 날은 다음 프로젝트 '키워드'가 정해졌다. 키워드에 맞춰 기획서를 작성해야 한다.
그거 생각하다가 너무 늦게 시작해서 4문제 밖에 못 풀었다.
PM 12:00 에 그 날 문제는 마감한다.

a=input()
if len(a) == 4 :
    print(20)
elif len(a) == 3 :
    if int(a[0]) == 1 :
        print( 10 + int(a[2]))
    elif  int(a[0]) != 0 :
        print(10 + int(a[0]))
elif len(a) == 2 :
    if int(a[0]) == 0 :
        print(a[1])
    elif int(a[1]) == 0 :     
        print(a[0])
    else:
        print(int(a[0])+int(a[1]))

if와 elif의 향연

5일차

마지막 날이다. 3000점으로 깔끔하게 마무리했다.
아직도 많이 부족하지만, 최근 코딩 문제 풀면서, 짧은 시간에 실력이 많이 는 것이 느껴진다.

a=int(input())
if a%4 == 0 :
    print('DODO')
else:
    print('ELICE')

문제 중 베스킨라빈스 게임이랑 비슷한 문제가 있었는데
누가 이길지 판별하는 문제다.
차분히 따라가니까 규칙성이 있었다.
위 문제에서는 a 숫자를 먼저 말하면 이기는데 규칙을 보면,
a-4의배수-1 을 말하고 턴을 끝내는 사람이 이긴다.
ex) 30을 먼저 말하면 이기는 게임이라면 30에서 4의 배수인 28을 뺀다. 그럼 2가 남는다.
즉 선공이 1,2를 말하고 턴을 끝내면 무조건 이기는 것이다.
두 사람이 이 필승법을 알고 있다면 선공, 후공 그리고 a에 따라 이길 사람이 처음부터 정해진다.
이길 사람의 이름을 출력하는 문제고 엘리스가 선공이라 코드가 저렇게 나온다.
4로 나누어 떨어지면 후공이 이기고 그렇지 않으면 선공이 이긴다.
후공이 매우 불리하다.

결과는 어떻게 될까?

입상은 총 9팀이고 한 팀에 5~6명이니까 코드 공유를 했어도 단순 계산으론 팀원들이 50위권으로 들어오면 장려상은 확정이다. 상위권 팀이 코드 공유를 제대로 안 했으면 우수상이 불가능한 것도 아니다.
나 26등, 우리 팀은 34등, 39위, 40위, 46위, 47위다. 장려상은 확정이고 우수상을 기대해 본다.

결과!

0개의 댓글