프로그래밍 114

[알고리즘] ICPC 2022 Seoul Regional

지난주 토요일 ICPC 2022 Seoul Regional에 참가했다. 올해는 킨텍스에서 진행됐고 금요일 예비소집, 토요일 본 대회로 이틀을 참석했다. (암호학 수업을 빠졌다. ㅠㅠ) Before Contest 교내 대회 개최 준비로 팀 연습을 많이 안해서 전략은 별로 없었다. 대회가 시작되면 한명은 앞에서부터, 다른 한명은 뒤에서부터, 그리고 내가 파일을 만들고 환경을 세팅해놓는 역할을 하기로 했다. vscode를 지원해서 좋아하고 있었는데 아무 확장이 없는 상태라 pycharm, clion을 사용하기로 했다. 본 대회에서 총 4문제를 풀었는데 내가 푼건 0개이다. ㅠㅠ 예비소집날 세종대팀과 같이 저녁을 했는데 양쪽팀 목표가 서로를 이기는 것이었다. ㅋㅋ 00:11 J solve! 대회가 시작되고 전략..

[알고리즘] ICPC 2022 인터넷 예선 후기

대학생활 마지막 ICPC를 나가게 되었다. 다들 실력이 좋아서 학교 1등으로 본선에 진출할 수 있게 되었다. 팀원 : riroan, aru0504, delena0702 Before Contest 팀명은 UCPC의 "일감호는 우리가 지킨다"를 영어로 적절히 바꾼 "Ilgam Rangers"로 정했다. 옛날엔 안그랬던거같은데 ICPC예선에서 카메라로 영상촬영을 해서 제출을 해야한다고 세명이 같은 장소에서 대회 내내 영상을 찍으라고 했다. 대충 카페같은데서 모여서 보려고 했으나 위와 같은 상황때문에 학교에서 강의실을 하나 빌리게 되었다. 이전 예선 대회들을 분석해보니까 한국어문제가 쉽고 I번문제가 쉬웠던 경향이 있었던 것 같아 이런 문제들을 먼저 공략하기로 했다. (ICPC여서 I가 쉬운거라고 추측했었지만 올..

[알고리즘] 메타 해커컵 2022 후기

라운드 2에서 2000등 안에 들면 티셔츠를 준다는 말에 메타(구 페이스북) 해커컵에 참여해봤다. 외국대회라 그런지 시간대가 심상치 않다. (새벽 2시 시작) 다행히 라운드 2에서 2000등 안에 들어서 티셔츠를 얻을 수 있게 되었다 oOvOo 제출 방식 해커컵은 다른 대회와 제출 방식이 다르다. 기본적으로 출력 결과를 제출하는 방식이고 예제를 통과해야 제출할 수 있다. 예제를 통과하면 전체 데이터셋을 압축파일로 제공하는데 이 파일에 암호가 걸려있다. 타이머를 시작하면 암호가 주어지고 프로그램 실행 후 결과를 제출하면 된다. AC는 대회가 끝난 후 초록색으로 표시된다. (Qualification A1 ~ B2) TLE는 타이머 안에 제출할 수 없고 회색으로 표시된다. (Qualification D) WA..

[알고리즘] 2023 KAKAO BLIND RECRUITMENT 1차 코딩테스트

작년까지 연습삼아 친 카카오 코딩테스트를 올해는 취준생 입장으로 응시하게 되었다. 지금까지 재미로 풀어왔던 알고리즘 문제를 내 취업을 위해 푼다고 생각하니 기분이 오묘했다. 포지션은 백엔드와 인프라가 있길래 백엔드로 지원했다. 문제의 자세한 설명을 남기면 안될 것 같아 풀이만 간략하게 작성하려고 한다. 모든 문제를 python으로 풀었다. 티어와 태그는 솔브드 기준 주관적으로 작성하였다. 1번 [Solved!] 티어 : B1 태그 : 구현, 사칙연산 날짜에서 종류에 맞게 달을 더한 뒤 현재 날짜와 비교하면 되는 단순 구현 문제이다. python에 datetime이라는 편리한 라이브러리가 있다. 2번 [Solved!] 티어 : S4 태그 : 그리디, 투포인터 어차피 모든 집을 돌아야 한다면 가장 먼 집부터..

우분투 22.04 업그레이드 오류

노트북 PC를 우분투 20.04에서 우분투 22.04로 업그레이드 하다가 오류가 났다. oh no! something has gone wrong a problem has occurred and the system can't recover. 이런 메시지가 나오면서 화면과 마우스가 먹지 않는 증상이다. 해결법 1. ctrl + alt + f3를 이용해서 CLI모드로 들어가서 로그인을 한다. 2. 다음 명령어를 입력한다. sudo apt-get update sudo apt-get dist-upgrade sudo dpkg --configure -a sudo apt-get clean sudo apt-get autoremove sudo reboot special thanks https://askubuntu.com/..

[도커] 12. dockerignore

우리는 git을 사용할 때 불필요한 파일의 add를 방지하기 위해 .gitignore파일로 관리한다. 도커도 같은방식으로 .dockerignore파일을 이용하여 관리할 수 있다. 사용방법을 한번 알아보자. 문제상황 dockerignore가 없을 경우 어떤 문제가 있는지 알아보자. # 폴더구조 ├── Dockerfile ├── log └── main.py # Dockerfile FROM python WORKDIR /app COPY . . CMD ["python3", "main.py"] # main.py import time while 1: pass # Do something main.py 는 어떤 작업을 수행하는 파이썬 파일이다. (ex. 웹서버, 모델 학습 ...) log파일은 컨테이너를 만들 때 불필요..

[도커] 11. 환경변수

도커에 들어있는 앱을 사용할때 데이터베이스 사용자 이름같은 환경변수를 주입해야 할 때가 있다. Dockerfile을 만들 때 편리한 방법으로 환경변수를 넣을 수 있다. 폴더 구성 ├── Dockerfile ├── app.py └── templates └── main.html 폴더 구조는 위와 같다. 간단한 플라스크를 이용해서 테스트해보고자 한다. # app.py from flask import Flask, render_template import os app = Flask(__name__) user = os.environ.get("USER_NAME") port = os.environ.get("PORT") @app.route("/") def main(): return render_template("main..

[도커] 10. 도커 네트워크

컨테이너에서 외부 api를 불러온다든지 다른 컨테이너의 api를사용하는 등 컨테이너에서 통신이 필요할 때가 있다. 실제로 컨테이너를 하나만 사용할 경우는 별로 없고 프론트 컨테이너, 백엔드 컨테이너, 데이터베이스 컨테이너를 한번에 사용하는 것처럼 여러개의 컨테이너가 통신해야 하는 경우가 많다. 이러한 통신을 하는 방법에 대해서 알아보자. 유스케이스 일단 컨테이너에서 통신을 하는 경우가 크게 아래와 같을 것이다. 여기서 호스트 컴퓨터는 도커를 실행하고 있는 컴퓨터이다. 5번과 6번은 실질적으로 컨테이너간의 통신이기 때문에 하나의 경우라고 봐도 된다. 물론 1부터 6까지 모든 연결이 가능하다. 이제 어떻게 통신하는지 알아보자. 위 통신을 위해 간단한 파일 두개를 한 폴더에 만들었다. # app.py from..

[스프링] 9. 쿼리메소드

지난 시간에 JPA를 이용하여 findById, findAll등의 메소드를 사용하여 데이터베이스에 접근할 수 있다는 것을 알았다. 그때는 간단하게만 살펴보았는데 복잡한 SQL문을 처리하고 싶을 수 있다. SQL문의 꽃이라고 볼 수 있는 select, from, where등을 사용할 수 있도록 하는 메소드가 쿼리메소드이다. // repository/UserRepository.java public interface UserRepository extends JpaRepository { List findByName(String name); } 위 메소드를 정의하고 테스트해보자. // test/repository/UserRepositoryTest.java @SpringBootTest class UserReposi..