Logo
(追記) (追記ここまで)

priority_queue, set의 정렬 기준 커스텀하기

priority_queue, set은 비교 조건에 sort 함수 등과는 다르게 함수 객체만 사용할 수 있습니다.

따라서 set<int,[](int x,int y)->bool{return x<y;}> s;와 같은 구문은 실행되지 않습니다. 혹은, 함수 cmp에 대해서 set<int,cmp> s;도 실행되지 않습니다.

이를 해결하기 위해서 일반적으로 새 구조체를 작성하는데, 그럴 경우에 다양한 정렬기준에 대해서 전부 구조체를 작성해야 하므로 번거롭습니다. 하지만 다음과 같이 구현하면 별다른 구조체 없이도 제대로 동작하게 됩니다.

더 읽기 댓글 쓰기

(C) 다차원 배열 편하게 malloc하기

백준 블로그는 처음이네요! 어떤 소재를 올리는 게 좋을지 모르겠어서 일단 제 다른 블로그에 올린 글에서 소재를 빼와서 쓰려고 합니다. C++에서는 쓸 수 없고 컴파일러도 맞아야 되기 때문에 유용할지는 모르겠네요.

보통 코드를 C로 짤 때는 아래와 같이 다차원 배열을 할당받습니다.

void version1(int h, int w) {
 int **array_2d = malloc(h * sizeof(int *));
 for(int i = 0; i < h; i++)
 array_2d[i] = malloc(w * sizeof(int *));
 // ...
 for(int i = 0; i < h; i++)
 free(array_2d[i]);
 free(array_2d);
}

더 읽기 댓글 쓰기

USACO 규칙(2021년 12월 이후)

이 글은 usaco.org의 정보를 바탕으로 작성되었습니다.

소개

USACO(미국 정보올림피아드, USA Computing Olympiad)가 내일부터(17일~20일) 열립니다! 온라인으로 진행되는 대회로, 누구나 참여 가능하고, 무료입니다. 백준에서는 boj.kr/usaco 를 통해 풀어볼 수 있습니다. 다만 득점 정도를 확인할 수 없기 때문에 필요하다면 usaco.org를 사용하는 것도 좋을 것 같습니다.

더 읽기 댓글 쓰기

(C/C++) 조건부 컴파일로 디버깅용 출력 한방에 없애기

  • 2021년 10월 5일
  • copyrat90
  • 댓글 (11개)
  • 매크로, 조건부_컴파일, 디버깅, Macro, Conditional_compilation, Debugging

여러분이 방금 틀렸습니다를 받았던 문제의 코너 케이스를 고쳤다고 해봅시다.

들뜬 마음에 점검도 안하고 바로 백준에 코드를 제출해버립니다!

void AddEdge(int v1, int v2)
{
 adjacencyList[v1].push_back(v2);
 adjacencyList[v2].push_back(v1);
 // 어라? 이거 지웠어야 하는데 그냥 제출해버렸네...
 printf("[DEBUG] Add edge (%d, %d)\n", v1, v2);
}

아... 근데 깜빡하고 디버깅하면서 출력했던 문자열을 안 지우고 제출해서 또 틀렸습니다를 받아버렸습니다...

깜빡하지 않았다고 하더라도, 디버깅용 문자열을 여기저기서 출력했다면 그걸 일일히 찾아서 지우는 것도 꽤 귀찮은 일입니다.

더 읽기 댓글 쓰기

이분 탐색(Binary Search) 헷갈리지 않게 구현하기

개요

이분 탐색은 off-by-one error가 발생하기 쉬워서 늘 헷갈립니다.

이분 탐색 문제를 풀다보면 탈출 조건으로 lo <= hi, lo < hi, lo + 1 < hi 중 어느 걸 선택해야 할 지, 정답이 lo인지 hi인지 (lo + hi) / 2인지 모르겠고, 심지어는 while문이 끝나지 않아서 시간초과를 받기도 합니다.

더 읽기 댓글 쓰기

❌ fflush(stdin), rewind(stdin) ❌

들어가면서

질문 게시판에 올라오는 C/C++ 코드 중 종종 fflush(stdin) 또는 rewind(stdin) 을 사용한 코드들이 올라옵니다.

결론부터 말하자면, 이런 문장을 쓰는 프로그램은 호환성이 없으며, 구현체가 달라지면 전혀 다른 행동을 할 수 있습니다.

위 두 문장은 Windows 운영체계에서 Microsoft Visual C++ (이후 MSVC)로 컴파일한 프로그램을 실행하고, stdin 이 키보드인 경우에만 원하는 동작을 하고, BOJ 의 채점 환경인 Linux 운영체계에서 GCC 또는 clang 로 컴파일한 프로그램을 실행하고, stdin 이 파일인 경우에는 전혀 다른 동작을 합니다. 이 두 함수의 원래 의미를 설명하는 것으로 글을 시작하겠습니다.

더 읽기 댓글 쓰기

C++ 유용한 기능들

이 글은 유용한 기능들을 소개하는 글입니다. "요약 노트" 정도로 생각해주시면 될 것 같습니다. 그래서 구체적인 원리나 주의사항, 확장 가능성에 대한 이야기는 생략합니다. 의견은 언제든 환영이고, 앞으로도 이 글은 지속적으로 개선해나가겠습니다. 이 글은 C++의 기본 문법을 숙지했고, std::vectorstd::set 등을 사용해본 경험이 있는 분들이 읽기 적합합니다.

  • f, l은 앞 주소와 뒷 주소를 나타내고, 여러 개면 번호를 1부터 차례대로 붙였습니다. (f, l은 first와 last의 약자, [f, l)임에 유의하세요)
  • 비교기반 함수에 대해서는 비교 함수를 추가하는 것이 항상 가능하므로, 생략하였습니다. (e.g sort(f,l)가 있으면 sort(f,l,cmp)가 존재함)
  • max가 있으면 min도 있습니다.
  • 아래의 코드 형식을 기본으로 합니다. 4번 줄은 입출력 속도를 향상하는 구문입니다. 자세한 정보는 입력 속도 비교글, 출력 속도 비교글을 참고해주세요.
  • G++ 컴파일러, C++17 환경을 기준으로 작성했습니다. (G++은 대회에서 일반적으로 지원하는 컴파일러이고, C++17은 규모가 큰 대회들이 대부분 지원하는 언어이기 때문입니다. 아직 C++20을 지원하지 않는 대회도 종종 있기에 C++20에 새로 추가된 문법은 따로 표시해 두었습니다.)
#include <bits/stdc++.h>
using namespace std;
int main() {
 cin.tie(0)->sync_with_stdio(0);
}

입출력

더 읽기 댓글 쓰기

Fast I/O 구현 코드

안녕하세요 jinhan814입니다. 제가 문제를 풀면서 자주 사용하는 FastIO 구현 코드를 공유하면 좋을 거 같아서 BOJ 블로그에 글을 작성해보았습니다.؜

(참고 : https://blog.naver.com/jinhan814/222266396476)

؜

더 읽기 댓글 쓰기

알고리즘 문제풀이를 함에 있어서 자주 접하게 될 용어들

이런 약자들에 대해 다룬 글이 하나쯤은 있었을 것 같지만, 잘 나오지 않아서 정리해 보았습니다. 이런 종류의 글은 백준 블로그에 어울리지 않았을까 하는 생각이지만, 저도 처음 써보는 거라 이상한 점 있으시면 피드백 주세요^^

  • UPD: 지엽적인 용어들도 종종 있습니다. 처음 시작하시는 분들은 이 글의 모든 용어를 알 필요는 없다는 점 유의해주세요.

OJ들 (Online Judge)

  • BOJ,백준: Baekjoon Online Judge
  • CF,코포: Codeforces
  • 앳코: Atcoder
  • USACO: USA Computing Olympiad
  • xOI: (지명) Olympiad in Informatics (ex. InternationalOI, BalticOI, KoreanOI, JpaneseOI,...)
  • ICPC: International Collegiate Programming Contest

더 읽기 댓글 쓰기

BOJ의 Good Bye, BOJ 2020!

12월 26일

2020년 12월 26일 토요일, 이 날은 BOJ에서 7개의 대회가 동시에 열린 날이었습니다. 이 날은 17시 23분부터 48분까지 채점 현황이 너무 느린 문제가 발생했습니다. 제출은 정상적으로 되지만, 제출 후에 바로 넘어가야하는 채점 현황 페이지가 열리지 않아 제출이 정상으로 되었는지 확인을 할 수 없는 문제가 있었습니다. 채점 현황이 너무 느려 채점이 약 5분 정도 밀려 결과를 볼 수 없었습니다.

지난 블로그: 2020년 7월 25일 서버 사고 이후 약 2달간 당시 사고를 재현해보고, 원인이 무엇이었는지, 각 원인이 어떤 연관 과정을 가졌는지 파악하는데 성공했습니다. 이후 일부 대비를 했지만, 원활한 대회 진행에 방해가 되는 현상은 피할 수 없었습니다.

더 읽기 댓글 쓰기

(追記) (追記ここまで)

검색

(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /