송용우

Update Slack api

......@@ -19,7 +19,7 @@
## API Table
| group | description | method | URL | Detail | Auth |
| ------- | --------------------------- | --------- | ----------------------- | -------- | --------- |
| ------- | --------------------------------- | ------ | ----------------------- | -------- | --------- |
| user | 유저 등록 | POST | api/user | 바로가기 | JWT Token |
| user | 유저 삭제 | DELETE | api/user:id | 바로가기 | JWT Token |
| user | 특정 유저 조회 | GET | api/user:id | 바로가기 | None |
......@@ -31,8 +31,8 @@
| profile | 유저 정보 수정 | POST | api/profile/setprofile | 바로가기 | JWT TOKEN |
| profile | 유저 정보 받아오기 | POST | api/profile/getprofile | 바로가기 | JWT |
| profile | 추천 문제 조회 | POST | api/profile/recommend | 바로가기 | None |
| notify | 슬랙 메시지 전송 요청 | POST | api/notify/ |
| slack | 바로가기 | Jwt Token |
| notify | 슬랙 메시지 전송 요청 (성취여부) | POST | api/notify/goal | 바로가기 | Jwt Token |
| notify | 슬랙 메시지 전송 요청 (문제 추천) | POST | api/notify/recommend | 바로가기 | None |
| auth | 로그인 | POST | api/auth/login | 바로가기 | None |
| auth | 로그아웃 | POST | api/auth/logout | 바로가기 | JWT Token |
| auth | 회원가입 | POST | api/auth/register | 바로가기 | None |
......
......@@ -1341,3 +1341,44 @@
::ffff:127.0.0.1 - - [24/Jun/2020:15:41:51 +0000] "GET /api/auth/check HTTP/1.1" 200 55 "http://localhost:3000/setting" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36 Edg/83.0.478.54"
::ffff:127.0.0.1 - - [24/Jun/2020:15:41:51 +0000] "POST /api/profile/getprofile HTTP/1.1" 401 12 "http://localhost:3000/setting" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36 Edg/83.0.478.54"
::ffff:127.0.0.1 - - [24/Jun/2020:15:41:51 +0000] "POST /api/profile/getprofile HTTP/1.1" 200 33293 "http://localhost:3000/setting" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36 Edg/83.0.478.54"
::1 - - [24/Jun/2020:16:47:20 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:47:43 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:48:07 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:49:04 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:50:59 +0000] "POST /api/notify/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:52:40 +0000] "POST /api/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::ffff:127.0.0.1 - - [24/Jun/2020:16:52:55 +0000] "POST /api/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:54:01 +0000] "POST /api/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:54:14 +0000] "POST /api/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:54:28 +0000] "POST /api/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:56:14 +0000] "POST /api/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:56:33 +0000] "POST /api/profile/getprofile HTTP/1.1" 200 33293 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:56:52 +0000] "POST /api/notify/slack/goal HTTP/1.1" 500 21 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:57:18 +0000] "POST /api/notify/slack/goal HTTP/1.1" 500 21 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:16:57:50 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:00:04 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::ffff:127.0.0.1 - - [24/Jun/2020:17:00:27 +0000] "POST /api/profile/getprofile HTTP/1.1" 200 33293 "http://localhost:3000/setting" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36 Edg/83.0.478.54"
::ffff:127.0.0.1 - - [24/Jun/2020:17:00:29 +0000] "POST /api/profile/setprofile HTTP/1.1" 200 33293 "http://localhost:3000/setting" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36 Edg/83.0.478.54"
::1 - - [24/Jun/2020:17:00:37 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:01:46 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::ffff:127.0.0.1 - - [24/Jun/2020:17:12:37 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:13:17 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:13:36 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:14:19 +0000] "POST /api/notify/slack/goal HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:22:37 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:23:06 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:27:52 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:30:55 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:32:42 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:34:03 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:36:50 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:40:43 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 500 21 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:42:09 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:43:17 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:53:11 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:53:24 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:54:40 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:55:11 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:55:24 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:17:55:39 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 404 9 "-" "PostmanRuntime/7.25.0"
::1 - - [24/Jun/2020:18:00:32 +0000] "POST /api/notify/slack/recommend HTTP/1.1" 500 21 "-" "PostmanRuntime/7.25.0"
......
......@@ -3,7 +3,7 @@ const api = new Router();
const auth = require("./auth");
const friend = require("./friend");
const notify = require("./profile");
const notify = require("./notify");
const user = require("./user");
const profile = require("./profile");
......
const Router = require("koa-router");
const notify = new Router();
notify.post("/slack");
const slackCtrl = require("./slack.ctrl");
notify.post("/slack/goal", slackCtrl.slackGoal);
notify.post("/slack/recommend", slackCtrl.slackRecommend);
module.exports = notify;
......
const Profile = require("../../models/profile");
const sendSlack = require("../../util/sendSlack");
const problem_set = require("../../data/problem_set");
const compareBJ = require("../../util/compareBJ");
/*
POST api/notify/slack/goal
{
username: "username"
}
*/
exports.slackGoal = async (ctx) => {
try {
const { username } = ctx.request.body;
const profile = await Profile.findByUsername(username);
if (!profile) {
ctx.status = 401;
return;
}
let slackURL = profile.getslackURL();
if (!slackURL) {
ctx.status = 401;
return;
}
let goalNum = profile.getgoalNum();
let todayNum = profile.getTodaySovled();
let message = "";
if (goalNum < todayNum) {
message =
"오늘의 목표 " +
goalNum +
"문제 중 " +
todayNum +
"문제를 풀었습니다." +
"\n" +
"잘하셨습니다!";
} else {
message =
"오늘의 목표 " +
goalNum +
"문제 중 " +
todayNum +
"문제를 풀었습니다." +
"\n" +
"분발하세요!";
}
sendSlack.send(message, slackURL);
} catch (e) {
ctx.throw(500, e);
}
};
/*
POST api/notify/slack/recommend
{
username: "username"
}
*/
exports.slackRecommend = async (ctx) => {
try {
console.log("1");
const { username } = ctx.request.body;
const profile = await Profile.findByUsername(username);
if (!profile) {
ctx.status = 401;
return;
}
let slackURL = profile.getslackURL();
if (!slackURL) {
ctx.status = 401;
return;
}
let unsolved_data = compareBJ.compareBJ(
profile.getBJdata(),
problem_set.problem_set
);
let recommendData = compareBJ.randomItem(unsolved_data);
if (!recommendData) {
ctx.status = 401;
return;
}
let message =
"오늘의 추천 문제는 " +
recommendData.problem_number +
"번 " +
" <https://www.boj.kr/" +
recommendData.problem_number +
"|" +
recommendData.problem_title +
">" +
" 입니다.";
sendSlack.send(message, slackURL);
} catch (e) {
ctx.throw(500, e);
}
};
exports.problem_set = [
"1517",
"2448",
"1891",
"1074",
"2263",
"1780",
"11728",
"10816",
"10815",
"2109",
"1202",
"1285",
"2138",
"1080",
"11399",
"1931",
"11047",
"15666",
"15665",
"15664",
"15663",
"15657",
"15656",
"15655",
"15654",
"15652",
"15651",
"15650",
"15649",
"6603",
"10971",
"10819",
"10973",
"10974",
"10972",
"7576",
"1248",
"2529",
"15661",
"14501",
"1759",
"14391",
"14889",
"1182",
"11723",
"1748",
"6064",
"1107",
"3085",
"2309",
"1748",
"14500",
"1107",
"1476",
"3085",
"2309",
"1261",
"13549",
"14226",
"13913",
"1697",
"1967",
"1167",
"11725",
"2250",
"1991",
"7562",
"2178",
"4963",
"2667",
"1707",
"11724",
"1260",
"13023",
"11652",
"1377",
"11004",
"10825",
"2751",
"9461",
"1699",
"9095",
"2225",
"2133",
"11727",
"11726",
"1463",
"2748",
"2747",
"11656",
"10824",
"2743",
"10820",
"10808",
"11655",
"11720",
"1008",
"10951",
"2557",
"1021",
"1966",
"2164",
"10799",
"17413",
"10866",
"1158",
"10845",
"1406",
"1874",
"9012",
"9093",
"10828",
"11721",
"11719",
"11718",
"10953",
"2558",
"10814",
"1181",
"11651",
"11650",
"1427",
"2108",
"10989",
"2751",
"2750",
"1436",
"1018",
"7568",
"2231",
"2798",
"1002",
"3053",
"4153",
"3009",
"1085",
"9020",
"4948",
"1929",
"2581",
"1978",
"2292",
"6064",
"2775",
"10250",
"2869",
"1011",
"1193",
"2839",
"1712",
"1316",
"2941",
"5622",
"2908",
"1152",
"1157",
"2675",
"10809",
"11720",
"11654",
"11729",
"2447",
"3052",
"10818",
"10872",
"10870",
"1065",
"4673",
"15596",
"4344",
"2920",
"8958",
"1546",
"2577",
"2562",
"1110",
"10951",
"10952",
"10871",
"2439",
"2438",
"11022",
"11021",
"2742",
"2741",
"15552",
"8393",
"10950",
"2739",
"10817",
"2884",
"2753",
"9498",
"1330",
"2588",
"10430",
"10869",
"1008",
"10998",
"7287",
"10172",
"10171",
"10718",
"1001",
"1000",
"2557",
{
problem_number: "1517",
problem_title: "버블 소트",
solved_date: "20200621",
},
{
problem_number: "2448",
problem_title: "별 찍기 - 11",
solved_date: "20200621",
},
{ problem_number: "1891", problem_title: "사분면", solved_date: "20200621" },
{ problem_number: "1074", problem_title: "Z", solved_date: "20200620" },
{
problem_number: "2263",
problem_title: "트리의 순회",
solved_date: "20200620",
},
{
problem_number: "1780",
problem_title: "종이의 개수",
solved_date: "20200619",
},
{
problem_number: "11728",
problem_title: "배열 합치기",
solved_date: "20200619",
},
{
problem_number: "10816",
problem_title: "숫자 카드 2",
solved_date: "20200619",
},
{
problem_number: "10815",
problem_title: "숫자 카드",
solved_date: "20200619",
},
{
problem_number: "2109",
problem_title: "순회강연",
solved_date: "20200619",
},
{
problem_number: "1202",
problem_title: "보석 도둑",
solved_date: "20200619",
},
{
problem_number: "1285",
problem_title: "동전 뒤집기",
solved_date: "20200617",
},
{
problem_number: "2138",
problem_title: "전구와 스위치",
solved_date: "20200617",
},
{ problem_number: "1080", problem_title: "행렬", solved_date: "20200617" },
{ problem_number: "11399", problem_title: "ATM", solved_date: "20200616" },
{
problem_number: "1931",
problem_title: "회의실배정",
solved_date: "20200616",
},
{ problem_number: "11047", problem_title: "동전 0", solved_date: "20200615" },
{
problem_number: "15666",
problem_title: "N과 M (12)",
solved_date: "20200614",
},
{
problem_number: "15665",
problem_title: "N과 M (11)",
solved_date: "20200614",
},
{
problem_number: "15664",
problem_title: "N과 M (10)",
solved_date: "20200614",
},
{
problem_number: "15663",
problem_title: "N과 M (9)",
solved_date: "20200614",
},
{
problem_number: "15657",
problem_title: "N과 M (8)",
solved_date: "20200614",
},
{
problem_number: "15656",
problem_title: "N과 M (7)",
solved_date: "20200614",
},
{
problem_number: "15655",
problem_title: "N과 M (6)",
solved_date: "20200614",
},
{
problem_number: "15654",
problem_title: "N과 M (5)",
solved_date: "20200614",
},
{
problem_number: "15652",
problem_title: "N과 M (4)",
solved_date: "20200614",
},
{
problem_number: "15651",
problem_title: "N과 M (3)",
solved_date: "20200612",
},
{
problem_number: "15650",
problem_title: "N과 M (2)",
solved_date: "20200612",
},
{
problem_number: "15649",
problem_title: "N과 M (1)",
solved_date: "20200612",
},
{ problem_number: "6603", problem_title: "로또", solved_date: "20200612" },
{
problem_number: "10971",
problem_title: "외판원 순회 2",
solved_date: "20200611",
},
{
problem_number: "10819",
problem_title: "차이를 최대로",
solved_date: "20200611",
},
{
problem_number: "10973",
problem_title: "이전 순열",
solved_date: "20200611",
},
{
problem_number: "10974",
problem_title: "모든 순열",
solved_date: "20200611",
},
{
problem_number: "10972",
problem_title: "다음 순열",
solved_date: "20200611",
},
{ problem_number: "7576", problem_title: "토마토", solved_date: "20200608" },
{ problem_number: "1248", problem_title: "맞춰봐", solved_date: "20200312" },
{ problem_number: "2529", problem_title: "부등호", solved_date: "20200311" },
{
problem_number: "15661",
problem_title: "링크와 스타트",
solved_date: "20200311",
},
{ problem_number: "14501", problem_title: "퇴사", solved_date: "20200311" },
{
problem_number: "1759",
problem_title: "암호 만들기",
solved_date: "20200310",
},
{
problem_number: "14391",
problem_title: "종이 조각",
solved_date: "20200306",
},
{
problem_number: "14889",
problem_title: "스타트와 링크",
solved_date: "20200305",
},
{
problem_number: "1182",
problem_title: "부분수열의 합",
solved_date: "20200305",
},
{ problem_number: "11723", problem_title: "집합", solved_date: "20200305" },
{
problem_number: "1748",
problem_title: "수 이어 쓰기 1",
solved_date: "20200305",
},
{
problem_number: "6064",
problem_title: "카잉 달력",
solved_date: "20200305",
},
{ problem_number: "1107", problem_title: "리모컨", solved_date: "20200305" },
{
problem_number: "3085",
problem_title: "사탕 게임",
solved_date: "20200305",
},
{
problem_number: "2309",
problem_title: "일곱 난쟁이",
solved_date: "20200305",
},
{
problem_number: "1748",
problem_title: "수 이어 쓰기 1",
solved_date: "20200228",
},
{
problem_number: "14500",
problem_title: "테트로미노",
solved_date: "20200228",
},
{ problem_number: "1107", problem_title: "리모컨", solved_date: "20200228" },
{
problem_number: "1476",
problem_title: "날짜 계산",
solved_date: "20200228",
},
{
problem_number: "3085",
problem_title: "사탕 게임",
solved_date: "20200228",
},
{
problem_number: "2309",
problem_title: "일곱 난쟁이",
solved_date: "20200228",
},
{
problem_number: "1261",
problem_title: "알고스팟",
solved_date: "20200228",
},
{
problem_number: "13549",
problem_title: "숨바꼭질 3",
solved_date: "20200227",
},
{
problem_number: "14226",
problem_title: "이모티콘",
solved_date: "20200227",
},
{
problem_number: "13913",
problem_title: "숨바꼭질 4",
solved_date: "20200227",
},
{
problem_number: "1697",
problem_title: "숨바꼭질",
solved_date: "20200227",
},
{
problem_number: "1967",
problem_title: "트리의 지름",
solved_date: "20200221",
},
{
problem_number: "1167",
problem_title: "트리의 지름",
solved_date: "20200221",
},
{
problem_number: "11725",
problem_title: "트리의 부모 찾기",
solved_date: "20200221",
},
{
problem_number: "2250",
problem_title: "트리의 높이와 너비",
solved_date: "20200221",
},
{
problem_number: "1991",
problem_title: "트리 순회",
solved_date: "20200221",
},
{
problem_number: "7562",
problem_title: "나이트의 이동",
solved_date: "20200220",
},
{
problem_number: "2178",
problem_title: "미로 탐색",
solved_date: "20200220",
},
{
problem_number: "4963",
problem_title: "섬의 개수",
solved_date: "20200219",
},
{
problem_number: "2667",
problem_title: "단지번호붙이기",
solved_date: "20200219",
},
{
problem_number: "1707",
problem_title: "이분 그래프",
solved_date: "20200217",
},
{
problem_number: "11724",
problem_title: "연결 요소의 개수",
solved_date: "20200214",
},
{
problem_number: "1260",
problem_title: "DFS와 BFS",
solved_date: "20200214",
},
{ problem_number: "13023", problem_title: "ABCDE", solved_date: "20200213" },
{ problem_number: "11652", problem_title: "카드", solved_date: "20200210" },
{
problem_number: "1377",
problem_title: "버블 소트",
solved_date: "20200210",
},
{
problem_number: "11004",
problem_title: "K번째 수",
solved_date: "20200210",
},
{ problem_number: "10825", problem_title: "국영수", solved_date: "20200210" },
{
problem_number: "2751",
problem_title: "수 정렬하기 2",
solved_date: "20200210",
},
{
problem_number: "9461",
problem_title: "파도반 수열",
solved_date: "20200205",
},
{
problem_number: "1699",
problem_title: "제곱수의 합",
solved_date: "20200205",
},
{
problem_number: "9095",
problem_title: "1, 2, 3 더하기",
solved_date: "20200205",
},
{ problem_number: "2225", problem_title: "합분해", solved_date: "20200205" },
{
problem_number: "2133",
problem_title: "타일 채우기",
solved_date: "20200204",
},
{
problem_number: "11727",
problem_title: "2×n 타일링 2",
solved_date: "20200203",
},
{
problem_number: "11726",
problem_title: "2×n 타일링",
solved_date: "20200203",
},
{
problem_number: "1463",
problem_title: "1로 만들기",
solved_date: "20200203",
},
{
problem_number: "2748",
problem_title: "피보나치 수 2",
solved_date: "20200203",
},
{
problem_number: "2747",
problem_title: "피보나치 수",
solved_date: "20200203",
},
{
problem_number: "11656",
problem_title: "접미사 배열",
solved_date: "20200203",
},
{ problem_number: "10824", problem_title: "네 수", solved_date: "20200203" },
{
problem_number: "2743",
problem_title: "단어 길이 재기",
solved_date: "20200203",
},
{
problem_number: "10820",
problem_title: "문자열 분석",
solved_date: "20200203",
},
{
problem_number: "10808",
problem_title: "알파벳 개수",
solved_date: "20200203",
},
{ problem_number: "11655", problem_title: "ROT13", solved_date: "20200203" },
{
problem_number: "11720",
problem_title: "숫자의 합",
solved_date: "20200131",
},
{ problem_number: "1008", problem_title: "A/B", solved_date: "20200131" },
{
problem_number: "10951",
problem_title: "A+B - 4",
solved_date: "20200131",
},
{
problem_number: "2557",
problem_title: "Hello World",
solved_date: "20200131",
},
{
problem_number: "1021",
problem_title: "회전하는 큐",
solved_date: "20200131",
},
{
problem_number: "1966",
problem_title: "프린터 큐",
solved_date: "20200131",
},
{ problem_number: "2164", problem_title: "카드2", solved_date: "20200131" },
{
problem_number: "10799",
problem_title: "쇠막대기",
solved_date: "20200131",
},
{
problem_number: "17413",
problem_title: "단어 뒤집기 2",
solved_date: "20200131",
},
{ problem_number: "10866", problem_title: "덱", solved_date: "20200131" },
{
problem_number: "1158",
problem_title: "요세푸스 문제",
solved_date: "20200131",
},
{ problem_number: "10845", problem_title: "큐", solved_date: "20200130" },
{ problem_number: "1406", problem_title: "에디터", solved_date: "20200130" },
{
problem_number: "1874",
problem_title: "스택 수열",
solved_date: "20200130",
},
{ problem_number: "9012", problem_title: "괄호", solved_date: "20200130" },
{
problem_number: "9093",
problem_title: "단어 뒤집기",
solved_date: "20200130",
},
{ problem_number: "10828", problem_title: "스택", solved_date: "20200129" },
{
problem_number: "11721",
problem_title: "열 개씩 끊어 출력하기",
solved_date: "20200126",
},
{
problem_number: "11719",
problem_title: "그대로 출력하기 2",
solved_date: "20200126",
},
{
problem_number: "11718",
problem_title: "그대로 출력하기",
solved_date: "20200126",
},
{
problem_number: "10953",
problem_title: "A+B - 6",
solved_date: "20200126",
},
{ problem_number: "2558", problem_title: "A+B - 2", solved_date: "20200126" },
{
problem_number: "10814",
problem_title: "나이순 정렬",
solved_date: "20200123",
},
{
problem_number: "1181",
problem_title: "단어 정렬",
solved_date: "20200122",
},
{
problem_number: "11651",
problem_title: "좌표 정렬하기 2",
solved_date: "20200122",
},
{
problem_number: "11650",
problem_title: "좌표 정렬하기",
solved_date: "20200122",
},
{
problem_number: "1427",
problem_title: "소트인사이드",
solved_date: "20190823",
},
{ problem_number: "2108", problem_title: "통계학", solved_date: "20190823" },
{
problem_number: "10989",
problem_title: "수 정렬하기 3",
solved_date: "20190823",
},
{
problem_number: "2751",
problem_title: "수 정렬하기 2",
solved_date: "20190814",
},
{
problem_number: "2750",
problem_title: "수 정렬하기",
solved_date: "20190814",
},
{
problem_number: "1436",
problem_title: "영화감독 숌",
solved_date: "20190814",
},
{
problem_number: "1018",
problem_title: "체스판 다시 칠하기",
solved_date: "20190814",
},
{ problem_number: "7568", problem_title: "덩치", solved_date: "20190814" },
{ problem_number: "2231", problem_title: "분해합", solved_date: "20190814" },
{ problem_number: "2798", problem_title: "블랙잭", solved_date: "20190814" },
{ problem_number: "1002", problem_title: "터렛", solved_date: "20190814" },
{
problem_number: "3053",
problem_title: "택시 기하학",
solved_date: "20190814",
},
{
problem_number: "4153",
problem_title: "직각삼각형",
solved_date: "20190814",
},
{
problem_number: "3009",
problem_title: "네 번째 점",
solved_date: "20190814",
},
{
problem_number: "1085",
problem_title: "직사각형에서 탈출",
solved_date: "20190814",
},
{
problem_number: "9020",
problem_title: "골드바흐의 추측",
solved_date: "20190814",
},
{
problem_number: "4948",
problem_title: "베르트랑 공준",
solved_date: "20190814",
},
{
problem_number: "1929",
problem_title: "소수 구하기",
solved_date: "20190814",
},
{ problem_number: "2581", problem_title: "소수", solved_date: "20190811" },
{
problem_number: "1978",
problem_title: "소수 찾기",
solved_date: "20190811",
},
{ problem_number: "2292", problem_title: "벌집", solved_date: "20190811" },
{
problem_number: "6064",
problem_title: "카잉 달력",
solved_date: "20190811",
},
{
problem_number: "2775",
problem_title: "부녀회장이 될테야",
solved_date: "20190811",
},
{
problem_number: "10250",
problem_title: "ACM 호텔",
solved_date: "20190811",
},
{
problem_number: "2869",
problem_title: "달팽이는 올라가고 싶다",
solved_date: "20190811",
},
{
problem_number: "1011",
problem_title: "Fly me to the Alpha Centauri",
solved_date: "20190811",
},
{
problem_number: "1193",
problem_title: "분수찾기",
solved_date: "20190810",
},
{
problem_number: "2839",
problem_title: "설탕 배달",
solved_date: "20190809",
},
{
problem_number: "1712",
problem_title: "손익분기점",
solved_date: "20190809",
},
{
problem_number: "1316",
problem_title: "그룹 단어 체커",
solved_date: "20190809",
},
{
problem_number: "2941",
problem_title: "크로아티아 알파벳",
solved_date: "20190809",
},
{ problem_number: "5622", problem_title: "다이얼", solved_date: "20190809" },
{ problem_number: "2908", problem_title: "상수", solved_date: "20190809" },
{
problem_number: "1152",
problem_title: "단어의 개수",
solved_date: "20190809",
},
{
problem_number: "1157",
problem_title: "단어 공부",
solved_date: "20190809",
},
{
problem_number: "2675",
problem_title: "문자열 반복",
solved_date: "20190809",
},
{
problem_number: "10809",
problem_title: "알파벳 찾기",
solved_date: "20190809",
},
{
problem_number: "11720",
problem_title: "숫자의 합",
solved_date: "20190809",
},
{
problem_number: "11654",
problem_title: "아스키 코드",
solved_date: "20190809",
},
{
problem_number: "11729",
problem_title: "하노이 탑 이동 순서",
solved_date: "20190809",
},
{
problem_number: "2447",
problem_title: "별 찍기 - 10",
solved_date: "20190809",
},
{ problem_number: "3052", problem_title: "나머지", solved_date: "20190807" },
{
problem_number: "10818",
problem_title: "최소, 최대",
solved_date: "20190807",
},
{
problem_number: "10872",
problem_title: "팩토리얼",
solved_date: "20190628",
},
{
problem_number: "10870",
problem_title: "피보나치 수 5",
solved_date: "20190628",
},
{ problem_number: "1065", problem_title: "한수", solved_date: "20190628" },
{
problem_number: "4673",
problem_title: "셀프 넘버",
solved_date: "20190628",
},
{
problem_number: "15596",
problem_title: "정수 N개의 합",
solved_date: "20190628",
},
{
problem_number: "4344",
problem_title: "평균은 넘겠지",
solved_date: "20190628",
},
{ problem_number: "2920", problem_title: "음계", solved_date: "20190628" },
{ problem_number: "8958", problem_title: "OX퀴즈", solved_date: "20190628" },
{ problem_number: "1546", problem_title: "평균", solved_date: "20190628" },
{
problem_number: "2577",
problem_title: "숫자의 개수",
solved_date: "20190628",
},
{ problem_number: "2562", problem_title: "최댓값", solved_date: "20190628" },
{
problem_number: "1110",
problem_title: "더하기 사이클",
solved_date: "20190628",
},
{
problem_number: "10951",
problem_title: "A+B - 4",
solved_date: "20190628",
},
{
problem_number: "10952",
problem_title: "A+B - 5",
solved_date: "20190628",
},
{
problem_number: "10871",
problem_title: "X보다 작은 수",
solved_date: "20190628",
},
{
problem_number: "2439",
problem_title: "별 찍기 - 2",
solved_date: "20190628",
},
{
problem_number: "2438",
problem_title: "별 찍기 - 1",
solved_date: "20190628",
},
{
problem_number: "11022",
problem_title: "A+B - 8",
solved_date: "20190628",
},
{
problem_number: "11021",
problem_title: "A+B - 7",
solved_date: "20190628",
},
{ problem_number: "2742", problem_title: "기찍 N", solved_date: "20190628" },
{ problem_number: "2741", problem_title: "N 찍기", solved_date: "20190628" },
{
problem_number: "15552",
problem_title: "빠른 A+B",
solved_date: "20190628",
},
{ problem_number: "8393", problem_title: "합", solved_date: "20190628" },
{
problem_number: "10950",
problem_title: "A+B - 3",
solved_date: "20190628",
},
{ problem_number: "2739", problem_title: "구구단", solved_date: "20190628" },
{ problem_number: "10817", problem_title: "세 수", solved_date: "20190627" },
{
problem_number: "2884",
problem_title: "알람 시계",
solved_date: "20190627",
},
{ problem_number: "2753", problem_title: "윤년", solved_date: "20190627" },
{
problem_number: "9498",
problem_title: "시험 성적",
solved_date: "20190627",
},
{
problem_number: "1330",
problem_title: "두 수 비교하기",
solved_date: "20190627",
},
{ problem_number: "2588", problem_title: "곱셈", solved_date: "20190627" },
{ problem_number: "10430", problem_title: "나머지", solved_date: "20190627" },
{
problem_number: "10869",
problem_title: "사칙연산",
solved_date: "20190627",
},
{ problem_number: "1008", problem_title: "A/B", solved_date: "20190627" },
{ problem_number: "10998", problem_title: "A×B", solved_date: "20190627" },
{ problem_number: "7287", problem_title: "등록", solved_date: "20190627" },
{ problem_number: "10172", problem_title: "개", solved_date: "20190627" },
{ problem_number: "10171", problem_title: "고양이", solved_date: "20190627" },
{
problem_number: "10718",
problem_title: "We love kriii",
solved_date: "20190627",
},
{ problem_number: "1001", problem_title: "A-B", solved_date: "20190607" },
{ problem_number: "1000", problem_title: "A+B", solved_date: "20190607" },
{
problem_number: "2557",
problem_title: "Hello World",
solved_date: "20190607",
},
];
......
......@@ -20,6 +20,17 @@ ProfileSchema.methods.getBJID = function () {
ProfileSchema.methods.getBJdata = function () {
return this.solvedBJ;
};
ProfileSchema.methods.getslackURL = function () {
return this.slackWebHookURL;
};
ProfileSchema.methods.getgoalNum = function () {
return this.goalNum;
};
ProfileSchema.methods.getTodaySovled = function () {
if (this.solvedBJ_date) {
return this.solvedBJ_date.presentNum;
}
};
ProfileSchema.methods.serialize = function () {
const data = this.toJSON();
......
exports.compareBJ = function (solvedBJ_new, problem_set) {
try {
let new_obj = [];
for (let i = 0; i < solvedBJ_new.length; i++) {
if (!problem_set.includes(String(solvedBJ_new[i].problem_number))) {
new_obj.push(solvedBJ_new[i]);
for (let i = 0; i < problem_set.length; i++) {
let found = false;
for (let j = 0; j < solvedBJ_new.length; j++) {
if (solvedBJ_new[j].problem_number == problem_set[i].problem_number) {
found = true;
break;
}
}
if (!found) {
new_obj.push(problem_set[i]);
}
}
console.log(new_obj);
return new_obj;
} catch (e) {
console.log(e);
......
const Slack = require("slack-node"); // 슬랙 모듈 사용
/*
const webhookUri =
"https://hooks.slack.com/services/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"; // Webhook URL
"https://hooks.slack.com/services/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"; // Webhook URL
*/
const slack = new Slack();
slack.setWebhook(webhookUri);
const send = async (message) => {
exports.send = async (message, webhookUri) => {
const slack = new Slack();
slack.setWebhook(webhookUri);
slack.webhook(
{
text: message,
......@@ -16,5 +17,3 @@ const send = async (message) => {
}
);
};
send("hello");
......
......@@ -8,7 +8,7 @@ const test = async (userid) => {
return_lst.push(lst[i].problem_number);
}
var stringJson = JSON.stringify(return_lst) + "\n";
var stringJson = JSON.stringify(lst) + "\n";
fs.open("test.json", "a", "666", function (err, id) {
if (err) {
console.log("file open err!!");
......
......@@ -206,3 +206,4 @@
"1000",
"2557"
]
[{"problem_number":"1517","problem_title":"버블 소트","solved_date":"20200621"},{"problem_number":"2448","problem_title":"별 찍기 - 11","solved_date":"20200621"},{"problem_number":"1891","problem_title":"사분면","solved_date":"20200621"},{"problem_number":"1074","problem_title":"Z","solved_date":"20200620"},{"problem_number":"2263","problem_title":"트리의 순회","solved_date":"20200620"},{"problem_number":"1780","problem_title":"종이의 개수","solved_date":"20200619"},{"problem_number":"11728","problem_title":"배열 합치기","solved_date":"20200619"},{"problem_number":"10816","problem_title":"숫자 카드 2","solved_date":"20200619"},{"problem_number":"10815","problem_title":"숫자 카드","solved_date":"20200619"},{"problem_number":"2109","problem_title":"순회강연","solved_date":"20200619"},{"problem_number":"1202","problem_title":"보석 도둑","solved_date":"20200619"},{"problem_number":"1285","problem_title":"동전 뒤집기","solved_date":"20200617"},{"problem_number":"2138","problem_title":"전구와 스위치","solved_date":"20200617"},{"problem_number":"1080","problem_title":"행렬","solved_date":"20200617"},{"problem_number":"11399","problem_title":"ATM","solved_date":"20200616"},{"problem_number":"1931","problem_title":"회의실배정","solved_date":"20200616"},{"problem_number":"11047","problem_title":"동전 0","solved_date":"20200615"},{"problem_number":"15666","problem_title":"N과 M (12)","solved_date":"20200614"},{"problem_number":"15665","problem_title":"N과 M (11)","solved_date":"20200614"},{"problem_number":"15664","problem_title":"N과 M (10)","solved_date":"20200614"},{"problem_number":"15663","problem_title":"N과 M (9)","solved_date":"20200614"},{"problem_number":"15657","problem_title":"N과 M (8)","solved_date":"20200614"},{"problem_number":"15656","problem_title":"N과 M (7)","solved_date":"20200614"},{"problem_number":"15655","problem_title":"N과 M (6)","solved_date":"20200614"},{"problem_number":"15654","problem_title":"N과 M (5)","solved_date":"20200614"},{"problem_number":"15652","problem_title":"N과 M (4)","solved_date":"20200614"},{"problem_number":"15651","problem_title":"N과 M (3)","solved_date":"20200612"},{"problem_number":"15650","problem_title":"N과 M (2)","solved_date":"20200612"},{"problem_number":"15649","problem_title":"N과 M (1)","solved_date":"20200612"},{"problem_number":"6603","problem_title":"로또","solved_date":"20200612"},{"problem_number":"10971","problem_title":"외판원 순회 2","solved_date":"20200611"},{"problem_number":"10819","problem_title":"차이를 최대로","solved_date":"20200611"},{"problem_number":"10973","problem_title":"이전 순열","solved_date":"20200611"},{"problem_number":"10974","problem_title":"모든 순열","solved_date":"20200611"},{"problem_number":"10972","problem_title":"다음 순열","solved_date":"20200611"},{"problem_number":"7576","problem_title":"토마토","solved_date":"20200608"},{"problem_number":"1248","problem_title":"맞춰봐","solved_date":"20200312"},{"problem_number":"2529","problem_title":"부등호","solved_date":"20200311"},{"problem_number":"15661","problem_title":"링크와 스타트","solved_date":"20200311"},{"problem_number":"14501","problem_title":"퇴사","solved_date":"20200311"},{"problem_number":"1759","problem_title":"암호 만들기","solved_date":"20200310"},{"problem_number":"14391","problem_title":"종이 조각","solved_date":"20200306"},{"problem_number":"14889","problem_title":"스타트와 링크","solved_date":"20200305"},{"problem_number":"1182","problem_title":"부분수열의 합","solved_date":"20200305"},{"problem_number":"11723","problem_title":"집합","solved_date":"20200305"},{"problem_number":"1748","problem_title":"수 이어 쓰기 1","solved_date":"20200305"},{"problem_number":"6064","problem_title":"카잉 달력","solved_date":"20200305"},{"problem_number":"1107","problem_title":"리모컨","solved_date":"20200305"},{"problem_number":"3085","problem_title":"사탕 게임","solved_date":"20200305"},{"problem_number":"2309","problem_title":"일곱 난쟁이","solved_date":"20200305"},{"problem_number":"1748","problem_title":"수 이어 쓰기 1","solved_date":"20200228"},{"problem_number":"14500","problem_title":"테트로미노","solved_date":"20200228"},{"problem_number":"1107","problem_title":"리모컨","solved_date":"20200228"},{"problem_number":"1476","problem_title":"날짜 계산","solved_date":"20200228"},{"problem_number":"3085","problem_title":"사탕 게임","solved_date":"20200228"},{"problem_number":"2309","problem_title":"일곱 난쟁이","solved_date":"20200228"},{"problem_number":"1261","problem_title":"알고스팟","solved_date":"20200228"},{"problem_number":"13549","problem_title":"숨바꼭질 3","solved_date":"20200227"},{"problem_number":"14226","problem_title":"이모티콘","solved_date":"20200227"},{"problem_number":"13913","problem_title":"숨바꼭질 4","solved_date":"20200227"},{"problem_number":"1697","problem_title":"숨바꼭질","solved_date":"20200227"},{"problem_number":"1967","problem_title":"트리의 지름","solved_date":"20200221"},{"problem_number":"1167","problem_title":"트리의 지름","solved_date":"20200221"},{"problem_number":"11725","problem_title":"트리의 부모 찾기","solved_date":"20200221"},{"problem_number":"2250","problem_title":"트리의 높이와 너비","solved_date":"20200221"},{"problem_number":"1991","problem_title":"트리 순회","solved_date":"20200221"},{"problem_number":"7562","problem_title":"나이트의 이동","solved_date":"20200220"},{"problem_number":"2178","problem_title":"미로 탐색","solved_date":"20200220"},{"problem_number":"4963","problem_title":"섬의 개수","solved_date":"20200219"},{"problem_number":"2667","problem_title":"단지번호붙이기","solved_date":"20200219"},{"problem_number":"1707","problem_title":"이분 그래프","solved_date":"20200217"},{"problem_number":"11724","problem_title":"연결 요소의 개수","solved_date":"20200214"},{"problem_number":"1260","problem_title":"DFS와 BFS","solved_date":"20200214"},{"problem_number":"13023","problem_title":"ABCDE","solved_date":"20200213"},{"problem_number":"11652","problem_title":"카드","solved_date":"20200210"},{"problem_number":"1377","problem_title":"버블 소트","solved_date":"20200210"},{"problem_number":"11004","problem_title":"K번째 수","solved_date":"20200210"},{"problem_number":"10825","problem_title":"국영수","solved_date":"20200210"},{"problem_number":"2751","problem_title":"수 정렬하기 2","solved_date":"20200210"},{"problem_number":"9461","problem_title":"파도반 수열","solved_date":"20200205"},{"problem_number":"1699","problem_title":"제곱수의 합","solved_date":"20200205"},{"problem_number":"9095","problem_title":"1, 2, 3 더하기","solved_date":"20200205"},{"problem_number":"2225","problem_title":"합분해","solved_date":"20200205"},{"problem_number":"2133","problem_title":"타일 채우기","solved_date":"20200204"},{"problem_number":"11727","problem_title":"2×n 타일링 2","solved_date":"20200203"},{"problem_number":"11726","problem_title":"2×n 타일링","solved_date":"20200203"},{"problem_number":"1463","problem_title":"1로 만들기","solved_date":"20200203"},{"problem_number":"2748","problem_title":"피보나치 수 2","solved_date":"20200203"},{"problem_number":"2747","problem_title":"피보나치 수","solved_date":"20200203"},{"problem_number":"11656","problem_title":"접미사 배열","solved_date":"20200203"},{"problem_number":"10824","problem_title":"네 수","solved_date":"20200203"},{"problem_number":"2743","problem_title":"단어 길이 재기","solved_date":"20200203"},{"problem_number":"10820","problem_title":"문자열 분석","solved_date":"20200203"},{"problem_number":"10808","problem_title":"알파벳 개수","solved_date":"20200203"},{"problem_number":"11655","problem_title":"ROT13","solved_date":"20200203"},{"problem_number":"11720","problem_title":"숫자의 합","solved_date":"20200131"},{"problem_number":"1008","problem_title":"A/B","solved_date":"20200131"},{"problem_number":"10951","problem_title":"A+B - 4","solved_date":"20200131"},{"problem_number":"2557","problem_title":"Hello World","solved_date":"20200131"},{"problem_number":"1021","problem_title":"회전하는 큐","solved_date":"20200131"},{"problem_number":"1966","problem_title":"프린터 큐","solved_date":"20200131"},{"problem_number":"2164","problem_title":"카드2","solved_date":"20200131"},{"problem_number":"10799","problem_title":"쇠막대기","solved_date":"20200131"},{"problem_number":"17413","problem_title":"단어 뒤집기 2","solved_date":"20200131"},{"problem_number":"10866","problem_title":"덱","solved_date":"20200131"},{"problem_number":"1158","problem_title":"요세푸스 문제","solved_date":"20200131"},{"problem_number":"10845","problem_title":"큐","solved_date":"20200130"},{"problem_number":"1406","problem_title":"에디터","solved_date":"20200130"},{"problem_number":"1874","problem_title":"스택 수열","solved_date":"20200130"},{"problem_number":"9012","problem_title":"괄호","solved_date":"20200130"},{"problem_number":"9093","problem_title":"단어 뒤집기","solved_date":"20200130"},{"problem_number":"10828","problem_title":"스택","solved_date":"20200129"},{"problem_number":"11721","problem_title":"열 개씩 끊어 출력하기","solved_date":"20200126"},{"problem_number":"11719","problem_title":"그대로 출력하기 2","solved_date":"20200126"},{"problem_number":"11718","problem_title":"그대로 출력하기","solved_date":"20200126"},{"problem_number":"10953","problem_title":"A+B - 6","solved_date":"20200126"},{"problem_number":"2558","problem_title":"A+B - 2","solved_date":"20200126"},{"problem_number":"10814","problem_title":"나이순 정렬","solved_date":"20200123"},{"problem_number":"1181","problem_title":"단어 정렬","solved_date":"20200122"},{"problem_number":"11651","problem_title":"좌표 정렬하기 2","solved_date":"20200122"},{"problem_number":"11650","problem_title":"좌표 정렬하기","solved_date":"20200122"},{"problem_number":"1427","problem_title":"소트인사이드","solved_date":"20190823"},{"problem_number":"2108","problem_title":"통계학","solved_date":"20190823"},{"problem_number":"10989","problem_title":"수 정렬하기 3","solved_date":"20190823"},{"problem_number":"2751","problem_title":"수 정렬하기 2","solved_date":"20190814"},{"problem_number":"2750","problem_title":"수 정렬하기","solved_date":"20190814"},{"problem_number":"1436","problem_title":"영화감독 숌","solved_date":"20190814"},{"problem_number":"1018","problem_title":"체스판 다시 칠하기","solved_date":"20190814"},{"problem_number":"7568","problem_title":"덩치","solved_date":"20190814"},{"problem_number":"2231","problem_title":"분해합","solved_date":"20190814"},{"problem_number":"2798","problem_title":"블랙잭","solved_date":"20190814"},{"problem_number":"1002","problem_title":"터렛","solved_date":"20190814"},{"problem_number":"3053","problem_title":"택시 기하학","solved_date":"20190814"},{"problem_number":"4153","problem_title":"직각삼각형","solved_date":"20190814"},{"problem_number":"3009","problem_title":"네 번째 점","solved_date":"20190814"},{"problem_number":"1085","problem_title":"직사각형에서 탈출","solved_date":"20190814"},{"problem_number":"9020","problem_title":"골드바흐의 추측","solved_date":"20190814"},{"problem_number":"4948","problem_title":"베르트랑 공준","solved_date":"20190814"},{"problem_number":"1929","problem_title":"소수 구하기","solved_date":"20190814"},{"problem_number":"2581","problem_title":"소수","solved_date":"20190811"},{"problem_number":"1978","problem_title":"소수 찾기","solved_date":"20190811"},{"problem_number":"2292","problem_title":"벌집","solved_date":"20190811"},{"problem_number":"6064","problem_title":"카잉 달력","solved_date":"20190811"},{"problem_number":"2775","problem_title":"부녀회장이 될테야","solved_date":"20190811"},{"problem_number":"10250","problem_title":"ACM 호텔","solved_date":"20190811"},{"problem_number":"2869","problem_title":"달팽이는 올라가고 싶다","solved_date":"20190811"},{"problem_number":"1011","problem_title":"Fly me to the Alpha Centauri","solved_date":"20190811"},{"problem_number":"1193","problem_title":"분수찾기","solved_date":"20190810"},{"problem_number":"2839","problem_title":"설탕 배달","solved_date":"20190809"},{"problem_number":"1712","problem_title":"손익분기점","solved_date":"20190809"},{"problem_number":"1316","problem_title":"그룹 단어 체커","solved_date":"20190809"},{"problem_number":"2941","problem_title":"크로아티아 알파벳","solved_date":"20190809"},{"problem_number":"5622","problem_title":"다이얼","solved_date":"20190809"},{"problem_number":"2908","problem_title":"상수","solved_date":"20190809"},{"problem_number":"1152","problem_title":"단어의 개수","solved_date":"20190809"},{"problem_number":"1157","problem_title":"단어 공부","solved_date":"20190809"},{"problem_number":"2675","problem_title":"문자열 반복","solved_date":"20190809"},{"problem_number":"10809","problem_title":"알파벳 찾기","solved_date":"20190809"},{"problem_number":"11720","problem_title":"숫자의 합","solved_date":"20190809"},{"problem_number":"11654","problem_title":"아스키 코드","solved_date":"20190809"},{"problem_number":"11729","problem_title":"하노이 탑 이동 순서","solved_date":"20190809"},{"problem_number":"2447","problem_title":"별 찍기 - 10","solved_date":"20190809"},{"problem_number":"3052","problem_title":"나머지","solved_date":"20190807"},{"problem_number":"10818","problem_title":"최소, 최대","solved_date":"20190807"},{"problem_number":"10872","problem_title":"팩토리얼","solved_date":"20190628"},{"problem_number":"10870","problem_title":"피보나치 수 5","solved_date":"20190628"},{"problem_number":"1065","problem_title":"한수","solved_date":"20190628"},{"problem_number":"4673","problem_title":"셀프 넘버","solved_date":"20190628"},{"problem_number":"15596","problem_title":"정수 N개의 합","solved_date":"20190628"},{"problem_number":"4344","problem_title":"평균은 넘겠지","solved_date":"20190628"},{"problem_number":"2920","problem_title":"음계","solved_date":"20190628"},{"problem_number":"8958","problem_title":"OX퀴즈","solved_date":"20190628"},{"problem_number":"1546","problem_title":"평균","solved_date":"20190628"},{"problem_number":"2577","problem_title":"숫자의 개수","solved_date":"20190628"},{"problem_number":"2562","problem_title":"최댓값","solved_date":"20190628"},{"problem_number":"1110","problem_title":"더하기 사이클","solved_date":"20190628"},{"problem_number":"10951","problem_title":"A+B - 4","solved_date":"20190628"},{"problem_number":"10952","problem_title":"A+B - 5","solved_date":"20190628"},{"problem_number":"10871","problem_title":"X보다 작은 수","solved_date":"20190628"},{"problem_number":"2439","problem_title":"별 찍기 - 2","solved_date":"20190628"},{"problem_number":"2438","problem_title":"별 찍기 - 1","solved_date":"20190628"},{"problem_number":"11022","problem_title":"A+B - 8","solved_date":"20190628"},{"problem_number":"11021","problem_title":"A+B - 7","solved_date":"20190628"},{"problem_number":"2742","problem_title":"기찍 N","solved_date":"20190628"},{"problem_number":"2741","problem_title":"N 찍기","solved_date":"20190628"},{"problem_number":"15552","problem_title":"빠른 A+B","solved_date":"20190628"},{"problem_number":"8393","problem_title":"합","solved_date":"20190628"},{"problem_number":"10950","problem_title":"A+B - 3","solved_date":"20190628"},{"problem_number":"2739","problem_title":"구구단","solved_date":"20190628"},{"problem_number":"10817","problem_title":"세 수","solved_date":"20190627"},{"problem_number":"2884","problem_title":"알람 시계","solved_date":"20190627"},{"problem_number":"2753","problem_title":"윤년","solved_date":"20190627"},{"problem_number":"9498","problem_title":"시험 성적","solved_date":"20190627"},{"problem_number":"1330","problem_title":"두 수 비교하기","solved_date":"20190627"},{"problem_number":"2588","problem_title":"곱셈","solved_date":"20190627"},{"problem_number":"10430","problem_title":"나머지","solved_date":"20190627"},{"problem_number":"10869","problem_title":"사칙연산","solved_date":"20190627"},{"problem_number":"1008","problem_title":"A/B","solved_date":"20190627"},{"problem_number":"10998","problem_title":"A×B","solved_date":"20190627"},{"problem_number":"7287","problem_title":"등록","solved_date":"20190627"},{"problem_number":"10172","problem_title":"개","solved_date":"20190627"},{"problem_number":"10171","problem_title":"고양이","solved_date":"20190627"},{"problem_number":"10718","problem_title":"We love kriii","solved_date":"20190627"},{"problem_number":"1001","problem_title":"A-B","solved_date":"20190607"},{"problem_number":"1000","problem_title":"A+B","solved_date":"20190607"},{"problem_number":"2557","problem_title":"Hello World","solved_date":"20190607"}]
......