韓国のAtcoder 백준(ペクジュン)を紹介する

# はじめに
自分は現在韓国の大学で情報分野を専攻しているのですが、元々凄腕の開発者だった学科の教授に韓国の競技プログラミングサイトである백준(ペクジュン)をおすすめされたので今回はそれについて1年ほど使ってみた感想やAtcoderとの違いについて簡単に紹介していこうと思います。
# 백준(以下ペクジュン)とは
ペクジュンとは2010年、최백준(チェペクジュン)によって開設された韓国の競技プログラミングサイト(アルゴリズムトレーニングサイト)のうちの一つで、一般的な競技プログラミングサイト同様コンテストがあったり、様々な種類のアルゴリズム問題を解くことができます。ペクジュンの一番の特徴は掲載されている問題の数が非常に多く、またc++やpythonなどの主要な言語に加えてBrain**やwhitespaceなどのマイナー言語にも対応している点です。全部韓国語ですがGoogle翻訳すれば問題なく理解できると思いますのでサイト内一度を覗いてみてください😀(以下のサイトの使い方についてはこれから説明していきます)

https://www.acmicpc.net/

https://solved.ac/


# 初め方
結論から言うとペクジュンもAtcoder同様、主に二つのWebサイトを使っていくことになります(AtcoderとAtcoderProblemsみたいな感じ)。基本的な使い方は以下の3ステップです。
```
①ペクジュン会員登録(Atcoderにあたる)
②ペクジュンとsolved.acの連携(solved.acはAtcoderでいうAtcoderProblemsにあたる)
③solved.ac(AtcoderProblems)で問題を解いていく
```

まず①と②に関しては書いてあるとおりペクジュンのサイトに入って会員登録をしてください。登録が終わったら設定(画面右上にある)の一覧の場所にsolved.acという欄があるためそこでペクジュンとsolved.acを連携させてください(連携するとそのままsolvedサイトに飛べると思います)。ペクジュンのサイト自体はAtcoderみたいに基本コンテストがある時しか使わないのでここからはAtcoderProblemsの役割を担うsolvedについて説明していきます。

まずsolved.acに入ると↓のような画面が出ると思います
![スクリーンショット 2023-05-29 7.56.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279945/69a1414a-6b6f-6049-25f3-9e8a4bd50065.png)
この画面一番上の문제(問題)という部分を押すと![スクリーンショット 2023-05-29 7.56.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279945/8ab284f6-f68a-75a0-d67b-fdcefd6b20cb.png)
の画面が出るのであとは基本的にこのブロンズの問題から解いていきます。難易度順としては

ブロンズ<シルバー<ゴールド<プラチナ<ダイヤモンド<ルビー(それぞれV~Iにかけて難しくなる)

という感じです。先輩の話を聞いたりネットで色々調べてみたところゴールド~プラチナくらいまで解ければ大体のコーディング試験はパスできるそうです(韓国の場合)。今回は試しに一番上のブロンズV(最も簡単なランク)の問題を解いてみます。先ほどの画面のブロンズVの場所を押すと↓の画面が出ます。
![スクリーンショット 2023-05-29 8.08.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279945/927e1a67-6a35-2604-d842-a1ddb30c760a.png)
今回は一番上のA+Bをとくのでここを押すと![スクリーンショット 2023-05-29 8.11.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279945/eef2f07a-5bae-d107-bd31-180571b22872.png)
問題が出てきます(google翻訳済み)。あとは画面上の提出ボタンからコードを書いて提出できます。
![スクリーンショット 2023-05-29 8.12.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279945/abaa1cff-e01a-3037-b5b8-e99e6fc3dc5e.png)
![スクリーンショット 2023-05-29 8.13.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279945/58f1f6ef-2f7b-b626-a05a-eb2c12c9a1a6.png)
google翻訳しているので変な日本語になってますが、そうだった！の場合は無事正解、間違っていますの場合は不正解ということになる。もし文法エラー等あれば何のエラーか表示されます。

基本的な使い方はこんな感じですが、solved.acはAtcoderProblemsのように自分が今まで解いてきた問題のデータなど見る場所があります。solved.acのホーム画面に？マークがあると思うのですが、そこを押すと
![スクリーンショット 2023-05-29 8.24.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279945/3f29955c-0b5c-5e8b-2ba9-5a4a21deb839.png)
![スクリーンショット 2023-05-29 8.24.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279945/82190f0a-3df6-22c0-a501-8a2a006249cd.png)
ここで自分が今まで解いてきた問題のアルゴリズム分類や難易度、コントゥリビューションなどを確認することができます(上記の画像は半年くらい前のものなのでstreakが全然埋まってないです)。まだ紹介してない機能もたくさんあるのですが長くなるので一旦ここまでにします。

# おすすめの進め方3選
ここまでで基本的な使い方は紹介してきました。しかしペクジュンは問題の数が多くブロンズVから全て問題を順に解いているといつまでたっても次のレベルに進めないので、以下におすすめの精進法3選を紹介します！
### ①「入門」問題を解く
これから紹介する①~③つは以下の赤で囲んだ部分を使っていきます。ペクジュンというよりそもそもプログラミングを始めたばかりに方には「入門(翻訳しない状態だとsprouts)」がいいと思います。
![](https://storage.googleapis.com/zenn-user-upload/e2e0d7c7b713-20240323.png)
ここでは基本的な入出力からforの使い方等基本的な問題から解いていけます↓![](https://storage.googleapis.com/zenn-user-upload/1bf591b4cb26-20240323.png)
### ②「CLASS」の問題を解いていく
「Class」で厳選された問題を難易度順に解くことがきます。①の「入門」を終えたら基本はこちらをやるのがいいかと思います。厳選された数十問を解くので効率的にステップアップできます！
![](https://storage.googleapis.com/zenn-user-upload/3c77a80107cd-20240323.png)
↑すみません画像切れてました
### ③アルゴリズム別で問題を解く
「タグ(翻訳なしだとTags)」の箇所でアルゴリズム別に問題を解くこともできます。練習したいアルゴリズムの問題をピンポイントで解けるのでコーディングテストの練習にも良さそうです！
![](https://storage.googleapis.com/zenn-user-upload/7d06da25e3e7-20240323.png)


# 1年ほど使ってみた感想
1年ほど使ってみてペクジュンはコーディングテスト向けなのかなと思いました。上でも紹介したように典型アルゴリズムごとにフィルターして練習したいアルゴリズムに絞って大量に問題を解けるのでめちゃ便利です。

# githubでペクジュンのプロフィールを表示させる(おまけ)
前提としてペクジュンの登録とsolved.acとの連携が完了してる必要があります。結論から行くと下記のコードを貼り付けることで実装できます。自分のユーザ名に変更することを忘れないでください。

```
[![Solved.ac　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　↓ここにユーザ名
프로필](http://mazassumnida.wtf/api/v2/generate_badge?boj={handle})](https://solved.ac/{handle})
```
このコードをgithubのREADMEに置くと

![](https://storage.googleapis.com/zenn-user-upload/6fdaf6a5017c-20240324.png)

こんな感じでかっこいいプロフィールが出てきます！
ちなみに下記のコードも実装することで上記の画像のようにミニバッチみたいなのも表示できます。
```
[![Solved.ac
프로필](http://mazassumnida.wtf/api/mini/generate_badge?boj={handle})](https://solved.ac/{handle})
```
一応公式のgithubアカウントも貼っておきます！

https://github.com/mazassumnida/mazassumnida

# 終わりに
ペクジュンやAtcoderで培う技術は実際のwebアプリケーション開発ではそこまで使う機会がないかもしれません。がこのようなコンテンツを通してその言語の基礎文法を習得できたり、計算量を意識したコーディング、またプログラミングをするということの習慣化など様々なメリットがあると思うので、皆さんも是非ペクジュンやAtcoderに挑戦してみてください！ここまで読んでくださりありがとうございました🙇