알고리즘 분야에 관심이 높아짐에 따라 백준에서 열리는
교내 알고리즘 대회나 기타 알고리즘 대회가 늘어나고 있습니다.
출제는 늘어났지만 출제를 하는 방법에 대한 글은 많이 늘어나지 않았습니다.
출제뉴비를 위한 문제출제의 대략적인 플로우와 각 단계에서 툴을 다루는 법에 대해 발표하고자 합니다.
크게 세 부분으로 발표할 예정입니다.
1. 폴리곤을 왜 쓰나요?
2. stack을 어떻게 쓰나요?
3. 대회 관리자는 뭘 해야 하나요?
### **굉부했던소다 (BOJ swoon)**
2022 홍익대학교 알고리즘 경진대회 출제,
제 1회, 제 2회 숙명여대 프로그래밍 대회 출제 및 검수,
ICPC Sinchon Algorithm camp 출제 및 대회관리 * 4
제 1회 곰곰컵 출제
총 8회의 대회 출제와 2회의 대회 관리자를 맡은 swoon입니다.
Automated hardware testing system using Python. The system includes an embedded test hardware module that can measure voltage, current, resistance and test protocols. Python scripts control the hardware, run test cases, collect results and generate reports. This provides a low-cost automated solution compared to expensive automated test equipment. Test reports show pass/fail results and help locate hardware and software issues.
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
파이썬 데이터과학 - 기초 과정(1일차)
- 데이터분석, 데이터시각화
- jupyter notebook, numpy, pandas, matplotlib, seaborn
2차 과정은 따로 올리겠습니다.
문의 및 제안 : se2n@naver.com
데이터 소스 : https://github.com/sh2orc/datascience
Dear readers, these Python Programming Language Interview Questions have been designed specially to get you acquainted with the nature of questions you may encounter during your interview for the subject of Python Programming Language. As per my experience good interviewers hardly plan to ask any particular question during your interview, normally questions start with some basic concept of the subject and later they continue based on further discussion and what you answer −
OpenCV를 활용하는 영상처리 어플리케이션 개발자들은 항상 GPU 자원을 활용하고 싶을 것이다. 하지만 이기종 컴퓨팅 환경에서 CPU 이외의 다른 하드웨어 자원을 활용하는 것은 개발 환경 및 백그라운드 지식 등의 많은 어려움이 따른다.
GPGPU 활용에 가장 상용화로 성공한 대중적인 솔루션으로는 nVidia 사의 CUDA 기술이 있지만, 그 외에도 GPGPU 자원을 쉽게 활용할 수 있는 오픈 플랫폼이 있는데 이것이 OpenCL 표준이다.
최근 하드웨어와 소프트웨어 진영에서 모두 OpenCL의 지원 및 발전이 두드러지며 점점 더 확산되는 추세이다.
OpenCV 진영에서도, 3.0이 정식 릴리즈 면서 본격적으로 OpenCL을 활용하기가 한층 쉬워졌다.
O documento apresenta a biblioteca padrão do C++ (STL) e seus principais componentes como containers, algoritmos e funções. Exemplos mostram como utilizar containers como vector, stack, set, queue e list para armazenar diferentes tipos de dados, assim como algoritmos de ordenação e busca. O documento também sugere como resolver o problema "Agente 004" usando estruturas de dados da STL como grafos e filas de prioridade.
Automated hardware testing system using Python. The system includes an embedded test hardware module that can measure voltage, current, resistance and test protocols. Python scripts control the hardware, run test cases, collect results and generate reports. This provides a low-cost automated solution compared to expensive automated test equipment. Test reports show pass/fail results and help locate hardware and software issues.
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
파이썬 데이터과학 - 기초 과정(1일차)
- 데이터분석, 데이터시각화
- jupyter notebook, numpy, pandas, matplotlib, seaborn
2차 과정은 따로 올리겠습니다.
문의 및 제안 : se2n@naver.com
데이터 소스 : https://github.com/sh2orc/datascience
Dear readers, these Python Programming Language Interview Questions have been designed specially to get you acquainted with the nature of questions you may encounter during your interview for the subject of Python Programming Language. As per my experience good interviewers hardly plan to ask any particular question during your interview, normally questions start with some basic concept of the subject and later they continue based on further discussion and what you answer −
OpenCV를 활용하는 영상처리 어플리케이션 개발자들은 항상 GPU 자원을 활용하고 싶을 것이다. 하지만 이기종 컴퓨팅 환경에서 CPU 이외의 다른 하드웨어 자원을 활용하는 것은 개발 환경 및 백그라운드 지식 등의 많은 어려움이 따른다.
GPGPU 활용에 가장 상용화로 성공한 대중적인 솔루션으로는 nVidia 사의 CUDA 기술이 있지만, 그 외에도 GPGPU 자원을 쉽게 활용할 수 있는 오픈 플랫폼이 있는데 이것이 OpenCL 표준이다.
최근 하드웨어와 소프트웨어 진영에서 모두 OpenCL의 지원 및 발전이 두드러지며 점점 더 확산되는 추세이다.
OpenCV 진영에서도, 3.0이 정식 릴리즈 면서 본격적으로 OpenCL을 활용하기가 한층 쉬워졌다.
O documento apresenta a biblioteca padrão do C++ (STL) e seus principais componentes como containers, algoritmos e funções. Exemplos mostram como utilizar containers como vector, stack, set, queue e list para armazenar diferentes tipos de dados, assim como algoritmos de ordenação e busca. O documento também sugere como resolver o problema "Agente 004" usando estruturas de dados da STL como grafos e filas de prioridade.
This document summarizes how to build a web application using Flask. It introduces HTTP requests and responses, and how Flask works with request and response objects. It then provides an example of building a basic Flask app with a view function to display "Hello World", and how to use Jinja templates to separate code and markup. The document also discusses using HTML forms to submit data via GET and POST requests.
Why is Python emerging technology?
Python with DataSciences and Machine Learning is future.
Python can also be used with Electronics.
Python as Scripting Language
The document discusses virtual machines and JavaScript engines. It provides a brief history of virtual machines from the 1970s to today. It then explains how virtual machines work, including the key components of a parser, intermediate representation, interpreter, garbage collection, and optimization techniques. It discusses different approaches to interpretation like switch statements, direct threading, and inline threading. It also covers compiler optimizations and just-in-time compilation that further improve performance.
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)Mr.Nukoon Phimsen
The document discusses using the Raspberry Pi's GPIO pins to control hardware interfaces with Node-RED. It provides examples of creating Node-RED flows to:
1. Control an LED by setting a GPIO pin as a digital output and toggling it on and off.
2. Control LED brightness using PWM by setting a GPIO pin as a PWM output and changing the duty cycle.
3. Read input from a binary sensor by setting a GPIO pin as a digital input and reading its state.
4. Read temperature from a 1-Wire temperature sensor connected to the Raspberry Pi's 1-Wire bus using a Node-RED 1-Wire node.
New language from Google, static safe compiler, with GC and as fast as C++ or Java, syntax simpler then Python - 2 hour-long tutorial and you can start code.
In this talk Serhii will talk about Go, also known as Golang – an open source language developed at Google and used in production by companies such as Docker, Dropbox, Facebook and Google itself. Go is now heavily used as a general-purpose programming language that’s a pleasure to use and maintain. This introductory talk contains many live demos of basic language concepts, concurrency model, simple HTTP-based endpoint implementation and, of course, tests using build-in framework. This presentation will be interesting for backend engineers and DevOps to understand why Go had become so popular and how it might help to build robust and maintanable services.
Agenda of the presentation:
1. Go is not C, not Java, not anything
2. Rob Pike argument
3. Main ideas and basics
4. Concurrency model
5. Tools
6. Issues
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
C++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
This document discusses refactoring Django applications using a hexagonal design pattern to improve modularity, loose coupling, and testability. It describes how a typical Django application can become coupled to the framework over time as new features are added. The hexagonal design pattern advocates separating the core domain model from the framework so it does not depend on Django classes or modules. It also promotes using ports and adapters so the domain communicates with the framework through well-defined interfaces. An example voting application is refactored from directly using Django models and methods to employing a separate poll engine module and repository that interacts with the models through adapters. This improves encapsulation, removes framework dependencies, and allows easier testing of the domain logic.
This document summarizes how to build a web application using Flask. It introduces HTTP requests and responses, and how Flask works with request and response objects. It then provides an example of building a basic Flask app with a view function to display "Hello World", and how to use Jinja templates to separate code and markup. The document also discusses using HTML forms to submit data via GET and POST requests.
Why is Python emerging technology?
Python with DataSciences and Machine Learning is future.
Python can also be used with Electronics.
Python as Scripting Language
The document discusses virtual machines and JavaScript engines. It provides a brief history of virtual machines from the 1970s to today. It then explains how virtual machines work, including the key components of a parser, intermediate representation, interpreter, garbage collection, and optimization techniques. It discusses different approaches to interpretation like switch statements, direct threading, and inline threading. It also covers compiler optimizations and just-in-time compilation that further improve performance.
02 Raspberry Pi GPIO Interface on Node-RED (Some correction)Mr.Nukoon Phimsen
The document discusses using the Raspberry Pi's GPIO pins to control hardware interfaces with Node-RED. It provides examples of creating Node-RED flows to:
1. Control an LED by setting a GPIO pin as a digital output and toggling it on and off.
2. Control LED brightness using PWM by setting a GPIO pin as a PWM output and changing the duty cycle.
3. Read input from a binary sensor by setting a GPIO pin as a digital input and reading its state.
4. Read temperature from a 1-Wire temperature sensor connected to the Raspberry Pi's 1-Wire bus using a Node-RED 1-Wire node.
New language from Google, static safe compiler, with GC and as fast as C++ or Java, syntax simpler then Python - 2 hour-long tutorial and you can start code.
In this talk Serhii will talk about Go, also known as Golang – an open source language developed at Google and used in production by companies such as Docker, Dropbox, Facebook and Google itself. Go is now heavily used as a general-purpose programming language that’s a pleasure to use and maintain. This introductory talk contains many live demos of basic language concepts, concurrency model, simple HTTP-based endpoint implementation and, of course, tests using build-in framework. This presentation will be interesting for backend engineers and DevOps to understand why Go had become so popular and how it might help to build robust and maintanable services.
Agenda of the presentation:
1. Go is not C, not Java, not anything
2. Rob Pike argument
3. Main ideas and basics
4. Concurrency model
5. Tools
6. Issues
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
C++11을 시작으로 모던 C++이 도입된 지도 어느새 6년이라는 시간이 흘렀습니다. 올해는 C++17 표준이 도입될 예정입니다. 그만큼 많이 개선되고 새로운 기능들이 많이 도입되었기에 실무에서 사용해보고 싶은 경우도 많습니다. 하지만 이미 서비스 중이라 기존 프로젝트를 새 버전의 VS로 마이그레이션하기 어려운 프로젝트가 많습니다. 그렇다고 아예 불가능한 일도 아닙니다. 이번 세미나에서는 기존 프로젝트를 새 버전의 VS로 마이그레이션하면서 발생했던 문제와 마이그레이션 이후 모던 C++을 사용하면서 발생했던 문제, 그리고 해결법을 설명하고자 합니다. 또한 새 버전의 VS에 생긴 유용한 기능들도 함께 알려드립니다.
This document discusses refactoring Django applications using a hexagonal design pattern to improve modularity, loose coupling, and testability. It describes how a typical Django application can become coupled to the framework over time as new features are added. The hexagonal design pattern advocates separating the core domain model from the framework so it does not depend on Django classes or modules. It also promotes using ports and adapters so the domain communicates with the framework through well-defined interfaces. An example voting application is refactored from directly using Django models and methods to employing a separate poll engine module and repository that interacts with the models through adapters. This improves encapsulation, removes framework dependencies, and allows easier testing of the domain logic.
2. 목차
1. boj stack 사용법
2. 대회관리자가 할 일
3. 문제 검수
출제뉴비를 위한 출제 a to b
3. Stack과 Polygon
Polygon - codeforces 문제 등록 사이트
세팅된 문제를 다운받아 옮길 수 있다.
문제들을 먼저 세팅할 때 사용하다.
영어지만, 그럭저럭 알아들을만 하다.
권한이 없어도 문제를 만들고 세팅할 수 있다.
출제뉴비를 위한 출제 a to b
Stack - BOJ 문제 등록 사이트
깔끔한 UI이다.
한국어이다.
권한이 있어야 문제를 만들고 세팅할 수 있다.
4. Stack/문제 목록
문제 목록에서 각 문제의 상태를 확인 할 수 있다.
설정되어있지 않거나 이상이 있으면 빨간색으로 표시된다.
각 버튼을 눌러 해당 사항을 수정 가능하다.
출제뉴비를 위한 출제 a to b
5. Stack/예제
예제 입력과 출력을 입력하는 공간이다.
예제 추가하기로 여러 예제를 만들 수 있다.
모든 줄 뒤에는 줄바꿈이 있어야 한다.
쓸모없는 띄어쓰기는 사용할 수 없다.
출제뉴비를 위한 출제 a to b
6. Stack/예제
예제의 출력이 어떻게 계산되었는지 설명해 주자.
난해한 지문을 보완해, 예제 설명을 통해 문제의 방향을 이해할 수 있다.
출제뉴비를 위한 출제 a to b
8. Stack/데이터
● 입력값 Max 데이터 : TLE(시간 초과)
● 입력값 Min 데이터: edge case
30개 이상 데이터로 구성한다.
많은 데이터는 랜덤 풀이를 막는다.
200 개 이상 데이터는 채점을 지연시켜 문제를 일으킨다.
100개 정도의 데이터가 적당하다.
[참고] 랜덤 데이터 생성 함수
https://codeforces.com/blog/entry/18291
출제뉴비를 위한 출제 a to b
9. Stack/데이터 검증
제작한 데이터가 문제의 형식에 부합하는 지 검사한다.
[코드] 데이터 검증 코드
● 모든 입력에 제약조건을 붙여 검사한다. 조건과 다를 경우 데이터 검증이 실패한다.
● 어느 데이터에서 문제가 생겼는지 통보한다.
출제뉴비를 위한 출제 a to b
10. Stack/데이터 검증
조건에 맞는 지 검사하는 여러 함수가 존재한다.
[참고] 랜덤 데이터 생성 함수
https://codeforces.com/blog/entry/18291
● n = inf.readInt(1, 100000) : 1이상 100000이하인 정수 하나를 입력받는다.
● ensure(int(s.size()) == n) : s의 크기가 n과 다르면 에러가 발생한다.
[코드] 데이터 검증 기본 틀
출제뉴비를 위한 출제 a to b
11. Stack/테스트
출력 데이터가 올바른지 검증한다.
● 잘못된 풀이, 뚫기, 랜덤을 막는다.
● 기대하는 결과와 채점 결과가 다르다면 붉은색 경고창이 뜬다.
● 틀려야 하는 풀이와 TLE가 나야 하는 풀이를 기대하는 결과로 걸어두고 실행한다.
출제뉴비를 위한 출제 a to b
12. Stack/문제 수정
• 시간 제한은 특별한 의도가 없는 한,
min(1, 정해 * 2)로 지정한다.
제목, 시간 제한, 메모리 제한 등 굉장히 많은 설정을 할 수 있다.
출제뉴비를 위한 출제 a to b
13. Stack/지문
● 모든 수식은 mathjax를 이용하여 작성한다.
● 대상을 지칭하는 명칭을 통일한다
예) 칸, 셀, 위치, 좌표
● 문제에서 사용하는 용어가 사전지식이 필요한 경우,
설명이나 참고할 수 있는 링크를 제공한다.
예) mex
● 지문으로 뇌절하지 않는다.
● HTML 개행 태그(<br>)을 사용하지 않는다.
[참고] 지문 작성 규정
https://stack.acmicpc.net/guide/problem
출제뉴비를 위한 출제 a to b
15. 대회관리자가 할 일
• 출제진, 검수진 모집하기
• 일정 짜기
• 백준님과 소통하기
• 진행도 확인하기
출제뉴비를 위한 출제 a to b
16. 대회 관리자 / 출제진 구하기
출제진은 지인에게 권하여 영입한다.
친구가 없거나 양질의 문제를 원한다면
콜포테(Call For Stack)로 구한다.
출제뉴비를 위한 출제 a to b
17. 콜포테 (Call For Stack)은 무엇인가
콜포테(Call For Stack)는
문제를 공모받은 뒤, 문제를 선정하는 방식이다.
● 사람을 부른 뒤 문제를 만드는 방식보다,
문제의 완성도와 대회의 문제 난이도 균형이 우수하다.
● 뽑히지 않은 문제는 다른 곳에 재탕되는 위험이 있다.
● 최소한의 인원이 문제를 선정해야 한다.
콜포테 사용 대회
UCPC (전국 대학생 프로그래밍 대회 동아리 연합 여름 대회)
SUAPC (신촌지역 대학생 프로그래밍 대회 동아리 연합 여름 대회)
출제뉴비를 위한 출제 a to b
18. 대회관리자 / 검수진 모집
검수진은 출제진보다 실력있어야 한다.
검수진은 백준에 구인글을 올려 모신다.
• 대회 설명
• 검수 문항 수
• 검수비
• 마감일
• 검수 자격
• 지원 링크
검수진 모집에 필요한 내용
출제뉴비를 위한 출제 a to b
19. 대회관리자/일정 짜기
대회는 최소 4주 일정으로 준비한다.
대회 준비 일정
• 문제 선정
• 문제 세팅 (1주)
• 문제 검수 (2주)
• 대회 픽스 (1주)
출제뉴비를 위한 출제 a to b
20. 대회관리자/백준님과 소통하기
백준님과 아래 내용을 소통한다.
백준님과 소통 내용
• 대회 개최 메일 보내기
• 문제 세부 설정 요청하기
• 대회 픽스하기
[참고] 백준 대회 개최 규정
https://help.acmicpc.net/contest/open
출제뉴비를 위한 출제 a to b
22. 대회관리자/백준님과 소통하기/세부설정
백준님에게 메일을 보내면 slack으로 소통할 수 있다.
백준님에게 slack으로 요청해야 할 사항들
• 언어별 기본 추가 시간이 아닌 언어별 시간을 설정해야 할 때
• 원래 계획과 대회의 문제 수에 변동이 생길 때
출제뉴비를 위한 출제 a to b
23. 대회관리자/백준님과 소통하기/대회 마감
대회 개최 일주일 전까지
문제 제목, 스택 번호,
대회 문제 번호, 출제진, 검수진을
솔브닥 슬랙으로 전달해야 한다.
시간이 살짝 지나도 봐주시긴 하시지만
마감을 지키자
[참고] 대회 마감 규정
출제뉴비를 위한 출제 a to b
24. 대회관리자/진행도
대회관리자는 각 문제의 진행도를 파악하고 있어야 한다.
문서를 만들어 출제자들이 적도록 한다.
[참고] 대회 진척도 문서
출제뉴비를 위한 출제 a to b
25. 대회관리자/진행도
검수진도 유사한 문서로 관리한다.
문서로 관리하면, 대회 마감 문서를 보낼 때 편리하다.
[참고] 대회 진척도 문서
출제뉴비를 위한 출제 a to b
26. 검수진 작업 요령
• 지문을 검수한다.
• 잘못된 데이터를 확인한다.
• 극단적인 데이터를 확인한다.
• (중요)출제자를 마구 괴롭혀서
못살게 군다
출제뉴비를 위한 출제 a to b
27. 검수 - 지문 / 잘못된 데이터
• 문제가 성립하지 않는 경우
• 문제에 잘못된 내용이 있는 경우
• 예제가 잘못된 경우
• 지문이 난해한 경우
• 출력 파일이 정해의 답과 다른 경우
• 입력 파일이 문제 조건에 부합하지 않는 경우
잘못된 데이터
수정할 필요가 있는 지문
출제뉴비를 위한 출제 a to b
28. 검수 - 극단적인 데이터 / 출제자 괴롭히기
• 틀려야 하는데 맞는 솔루션
• 가지치기한 naive 솔루션
(무조건 짜야 함)
• n초간 랜덤을 돌리는 솔루션
(답의 후보가 많지 않은 문제에서 효과적)
출제자 괴롭히기
극단적인 데이터
• min, max 데이터
• 같은 값으로 구성된 데이터
• 오름차순, 내림차순 데이터
• 차수가 n-1인 트리
• 쭉 퍼져있는 트리
검수자가 출제자를 괴롭힐수록
데이터가 보강됩니다.
출제뉴비를 위한 출제 a to b