전체 글 83

더 늦기 전에 작성하는 Generative AI에 대한 단상

요즘 생성형 AI 분야의 기술 발전이 너무 빨라서... 불과 1년 전에는 먼 미래의 일이라고 생각했거나, 달성 가능 여부조차 불분명했던 기술들이 오늘은 상용화되어 삶을 바꾸고 있다. 근 몇년간의 변화는 특히 정말 급진적이었는데(이 또한 미래에 돌아본다면 정말 아무것도 아니었던 것으로 보일 정도로 기하급수적인 기술 발전이 일어날까봐 무섭다) 이러한 기술 발전에 대한 나의 단상을 기록으로 남기고자 한다. 2020년(학교 동아리에서 수능 영어를 푸는 AI를 만들어보자는 아이디어를 보며) 와 이거 진짜 어렵겠다... 정답률 한 40%만 달성해도 정말 혁신적이겠는걸?(OpenAI라는 회사에서 GPT-3라는 언어모델을 발표했는데, 성능이 엄청 좋다는 뉴스를 보며) 오... 이젠 AI가 어느 정도 글도 자연스럽게 쓸..

대회후기: Codeforces Round 896 (Div. 2)

와 마지막 코드포스 대회로부터 1년도 더 됐다. A: Make It Zero 원래 div 2 A 문제가 이렇게 어렵던가? 숫자들이 주어졌을 때 연속된 범위로 묶어 XOR 처리한 이후 그 결과로 해당 범위의 모든 수를 덮어씌우는 연산을 최대 8번 수행해서, 모든 수를 0으로 만드는 방법을 찾아야 한다. 숫자의 개수가 짝수일 때는 모든 숫자에 해당 연산을 두번 반복하면 모두 0이 된다. 숫자의 개수가 홀수일 때는 모든 숫자에 해당 연산을 수행한 이후, 마지막 숫자를 제외한 짝수개의 숫자에 연산을 적용해 모두 0으로 만들어준 이후, 마지막 숫자와 그 직전 숫자(이제 0이다) 두 숫자에 대해 연산을 두번 반복해주면 된다. AC: 9 분 B: 2D Traveling 평면 위에 도시들이 있다. 특정 도시들은 '주요..

카테고리 없음 2023.09.11

대회후기: SCPC 2023 Rounds 1 & 2

입대를 한 2021년 이후 전반적으로 competitive programming 공부를 하지 않은 것이 사실이다. 그럼에도 불구하고 대회를 참여해서 손해볼 것은 없기에 SCPC를 다시 한번 신청하였다. 결과적으로 망하기는 했는데(나는 SCPC류의 well-known 문제들을 풀어내는 능력보다 이전 Google Code Jam 느낌의 ad hoc 문제에 더 강하다 - 그냥 공부를 안해서 그럴지도) 기록은 남긴다. 사실 요즘 기록을 남기는 것을 많이 소홀히 하고 있다. 대회 기록이 밀림은 물론이고, 평소 열심히 쓰던 일기와 강의 평가 또한 밀렸다. 뭔가 기록을 하자니 밀린 기록들부터 다 작성해야 할 듯한 기분이고, 또 기록을 퀄리티 높게 하려고 하다보니 부담이 되어 자꾸 미루게 된다. 그래서 그냥 앞으로는 ..

드디어 스와이프 벽돌깨기 AI를 만들어 보았다

이전 글: 갑자기 스와이프 벽돌깨기 레플리카를 만들어 보았다 갑자기 스와이프 벽돌깨기 레플리카를 만들어 보았다 제목 그대로이다. 나도 왜 만들었는지는 잘 모르겠지만 아무튼 만들어버려서, 앞으로 이걸 플레이하는 AI를 강화학습 또는 유전 알고리즘으로 학습시켜볼까 한다. github.com/SyphonArch/brick_breaker GitH syphon.tistory.com Github Repository GitHub - SyphonArch/brick_breaker: This project features a clone of a popular 'brick breaker' game variant, characterised by sho This project features a clone of a popula..

개발/기타 2023.02.02

2018 - A Fidgety Problem (고3)

고딩때는 피젯 스피너가 한참 유행했었다. 유행 당시에는 크게 관심을 갖지 않았는데, 아빠가 어떤 회사 행사의 기념품으로 3D printing된 스피너 두개를 갖고온다. 예비 고3 때 그걸 돌려본 것이 내 수험생활 최대의 공부 손실로 이어졌다. 하지만 얻은 것이 결국 더 많으니.. 은 우연히 돌려본 스피너에서 down the rabbit hole을 해버린 이야기이다. 팔이 3개인 피젯 스피너를 빠르게 돌리면.. 처음에는 별다른 형상이 보이지 않다가, 팔 6개가 정지한 듯한 잔상이 보이는 시점이 온다. 조금 기다리면 기존의 잔상이 사라지고, 다시 팔 9개가 정지한 것처럼 보이는 시점이 온다. 이어서 12개.. 15개... 18개... 정지한 잔상이 보이는 시점간의 간격은 점점 더 짧아지며, 팔의 개수는 3개..

2016 - Silent Storm (고1)

2016년, 고1의 3월에는 알파고와 이세돌의 대국이 있었다. 그냥 지나칠 수 없었던 나는 (지금기준) 간단한 Minimax 알고리즘의 오목 AI를 구현해본다. 당시 나는 코딩을 본격적으로 시작한 지 1년도 채 안된 뉴비였기에 나름 큰 도전이었었다. To my own surprise, 일주일만에 동작하는 무언가를 만들어낸다. 하지만 오목 성능은 그닥 좋지 않았었다. 여러가지 최적화를 통해 착점 속도를 3분에서 3초까지 낮추었지만 여전히 성능은 구렸다 ㅋㅋㅋㅋ 조금 더 탐색공간이 작은 게임을 찾다가 오셀로 게임을 발견한 것으로 기억한다. (아니면 그냥 다른게임도 해보려고 했을지도? 아니면 동아리 부장 선배가 "오 나도 오셀로 AI 만들려고 했었는데"를 듣고 했을지도? 기억이 정확히 안난다. 쓰고보니 후자였..

2015 - Adventureland (중3)

코딩모험을 작성하면서, 블로그를 시작하기 전 과거의 몇몇 작품들을 간단히 올려두면 좋을 것 같다는 생각을 하게 되었다. Adventureland는 내가 처음으로 작성한 (당시 기준) 대형 프로젝트이다. Python 기초 문법 강의만 들었던 내가 우연히 발견한 텍스트 어드벤처 게임인 Dunnet에 신선한 충격을 받고, 당시 내가 알고 있던 Python 지식을 총동원하여 수개월에 걸쳐 만들었다. 정확한 작업 기간은 기억나지 않지만, 여름부터 작업하여 12월 초, 외국인학교를 떠나기 일주일 전에 친구들에게 배포하였었다. 프로젝트를 시작할 때만 해도 이정도 규모의 코딩은 처음인지라 게임의 루프 구조 등을 어떻게 설계해야 할지부터 난감했었던 기억이 난다. 또 (사실 게임이라서 어느정도 허용해도 되긴 하지만) 글로..

코딩모험[4] // 대학교 - 하라는 코딩은 안하고

Syphon의 코딩모험 - 목차대학교에서는, 고등학교 때까지 사실상 Python 하나밖에 모르던 내가 다른 언어도 접하고,컴퓨터 구조도 배우고, 어셈블리도 배우고 하면서 다방면의 스킬셋을 갖춘 개발자로 성장해나가는 시기가 아닌가 싶다. 항상 컴퓨터공학을 배우고 싶었던 나는 운이 좋게 원하는 대학의 원하는 학과에 진학하였고, 이제는 아마추어가 아닌 나름의 전공자로서 코딩을 계속해나갈 수 있게 되었다. 그런데 지금까지는 코딩 != 공부였는데 이제 코딩 == 공부가 되어버려서 공부를 위한 코딩은 갑자기 하기 싫어져버렸다. 또 규모가 크고 배울 점이 많은 개인 프로젝트들은 자꾸 미루게 된다.대신 1학년 때부터 새로 접한 Competitive Programming(프로그래밍 경시대회류의 대회)을 정말 열심히 하긴..

코딩모험[3] // 고등학교 - 하라는 공부는 안하고

Syphon의 코딩모험 - 목차 Python을 접한 지 약 반년이 지났다. 그새 객체지향을 배워서, 예비 고1 방학 동안 전작과는 확장성과 기능 측면에서 비교도 안되게 발전한 Adventureland 2를 완성.. 하지 못하고 게임 엔진만 다 만들어두었다. (퍼즐 게임이었던 전작과는 달리 RPG 느낌의 설계였고, 자동으로 움직이는 적, 속성을 가진 무기 등을 구현했었다.) 고등학교에 입학하자마자 SOMAD(현 PATCH)라는 컴퓨터 동아리에 가입했다. 당시 제출했던 지원서를 보면 2016년의 내가 뭘 할 수 있(다고 생각했)었는지 살펴볼 수 있다. 입학하던 해 2016년의 3월에는 AlphaGo와 이세돌의 대국이 있었다. 뭔가 상당히 흥미로워보여서, 게임 AI를 어떻게 만드는지 검색해보았고, minima..

코딩모험[2] // 외국인학교 - 이게 코딩... 이구나?

Syphon의 코딩모험 - 목차 외국인학교를 가고 2011년에 ICT 과목이 처음 생겼다. 하지만 개교한 지 얼마 되지 않았던지라 IT 선생님이 없었다. ICT 수업 시간에는 과학 선생님이 그냥 MS Excel을 하는 둥 마는 둥 가르쳤다. 그래도 이때 엑셀 함수들을 작성하면서, 코딩할 때와 유사한 느낌을 받았던 것 같다. 어떠한 작업을 하는 방법을 단계별로 쪼개서, 컴퓨터에게 설명하는 느낌? 설명하기를 좋아하는 내가 컴퓨터에게 하는 설명에도 재능이 어느정도 있다는 것을 깨닫는 계기였다. 그리고 1년 후에 진짜 IT 선생님이 왔다. 2012-2013년에는 RAM, HDD, CPU와 같은 컴퓨터 부품들의 역할을 배웠고, Linux(Ubuntu 12.04 LTS였다)에서 MIDI 음악편집과 크로마 키 배경치..