손* 학생의 전국 중고등 알고리즘 경진대회 본선에서 동상 입상을 축하합니다.

손* 학생이 계속 꾸준히 공부하여 자신이 목표한 것을 꼭 이룰 수 있기를 응원합니다.^^

 

[원당컴퓨터학원 입상내역현황]

2021년 ICT어워드 입상내역(초등부 동상2) - https://wondangcom.tistory.com/1912

2021년 정보올림피아드 1차대회 입상내역(고등부1,중등부2,초등부2) - https://wondangcom.tistory.com/1885

2020 전국 중고등 알고리즘 경진대회 본선 동상 입상 - wondangcom.com/1685

2020년 전국 중고등 알고리즘 경진대회 결선 진출 - wondangcom.tistory.com/1658

2020년 세상을 바꾸는 코딩 NYPC 입상내역(특별상) - wondangcom.com/1526

2019년 로봇사업화 아이디어 경진대회 1등 - https://wondangcom.com/1077

2019년 알고리즘 히어로즈 오프라인 이벤트 초대 - https://wondangcom.com/1036

2019년 세상을 바꾸는 코딩 NYPC 입상내역(특별상) - https://wondangcom.com/999

2019년 중학생 IT올림피아드 입상내역(동상1) - https://wondangcom.com/944

2019년 정보올림피아드 전국대회 입상내역(중등부 동상2,장려1,초등부 장려1) - https://wondangcom.com/941

2019년 ICT K-Awards 장려상 수상 -  https://wondangcom.com/928

2019년 제13회 서울로봇·드론 경진대회 금상 수상 - https://wondangcom.com/870

2019년 정보올림피아드 지역대회 수상내역(중등부 지역금상(전국은상)1,지역은상(전국은상)1,지역동상(전국은상)1, 초등부 지역동상(전국동상)1 ) - https://wondangcom.com/847

2018년 전국청소년 과학탐구대회(과학컴퓨팅) 본선 은상2 수상 - http://wondangcom.com/669

2018년 코드챌린저 본선진출 - http://wondangcom.com/637

2018년 이데일리 코딩챌린지 2018 본선진출 - http://wondangcom.com/598

2018년 정보올림피아드 전국대회 수상내역(초등부 은상1,동상1) - http://wondangcom.com/484

2018년 중학생 IT올림피아드 수상내역(동상1,장려1) - http://wondangcom.com/479

2018년 엔트리 공모전 수상내역(3등) - http://wondangcom.com/381

2018년 정보올림피아드 인천 지역대회 수상내역(중등부 장려 2명,초등부 동상1,장려2) - http://wondangcom.tistory.com/362?category=717983

2017년 세상을 바꾸는 코딩 NYPC 특별상 수상내역 - http://wondangcom.com/165?category=767266

2017년 SW창의 융합축체 SW코딩대회 1등(마스터상) 수상내역 - http://wondangcom.tistory.com/202?category=717983

2017년 k-awards 알고리즘(장려1),스크래치(장려1) 부문 수상내역 - http://wondangcom.tistory.com/202?category=717983

2017년 중학생 IT올림피아드 수상내역(장려1) - http://wondangcom.tistory.com/96?category=717983

2017년 5월 오픈

2017년 오픈전 실적

2017년 정보올림피아드 인천 지역대회 - 중등부 장려 2명,초등부 장려 1명

2016년 정보올림피아드 전국 대회 - 초등부 은상 2명

2016년 정보올림피아드 인천 지역대회 - 초등부 금상 1명,동상 1명

2015년 정보올림피아드 전국 대회 - 초등부 동상 1명

2015년 정보올림피아드 본선대회 - 초등부 은상 1명

2015년 정보올림피아드 지역 예선대회 - 초등부 은상 1명,장려 1명

 

 

인천 서구 검단신도시 원당컴퓨터학원

 

 

 

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기

아무것도 예측하기 어려운 미래사회,

우리 아이가 은둔형 외톨이로 성장한다면?

아이의 행복한 미래를 바라는 부모라면

격변하는 미래환경에 맞춘 새로운 자녀교육법을 알아야 한다.

인공지능 시대를 살아가는 우리 아이들을 위해서 어떤식으로 공부를 해야 할까?

인공지능으로 바뀌는 우리 아이의 미래는 어떻게 될까?

미래에 대해 궁금하신 학부모님이 읽어 보시면 좋을 책입니다.

 

 

초등학생을 두신 학부모님이 읽어 보시기 좋을것 같네요.~

신청방법은 비밀댓글로 주소/이름/전화번호 를 적어 주시면 해당 주소로 착불로 발송해 드립니다.

 

단,한명만 신청이 가능하오니 맨 처음 신청 하신 분에게 나눔합니다.

 

 

2020년 마지막 남은 하루 마무리 잘 하시고~

2021년에는 새로운 출발, 새로운 희망으로 새해 한가득 희망찬 한해가 되시길 기원합니다.

새해 복많이 많이 받으세요~

 

인천 서구 원당컴퓨터학원

 

 

 

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. Favicon of https://lsmpkt.tistory.com BlogIcon 가족바라기 2020.12.31 09:58 신고

    초등학생 부모면 정말 좋은 책이네요
    올한해도 수고 많으셨어요
    마무리 잘하시고 신축년 좋은일만 가득하세요
    새해 복 많이 받으세요!

  2. Favicon of https://paran2020.tistory.com BlogIcon H_A_N_S 2020.12.31 14:53 신고

    새해 복 많이×10002 받으세요ㅎㅎ

  3. Favicon of https://dragonphoto.tistory.com BlogIcon 드래곤포토 2021.01.01 10:56 신고

    새해아침입니다.
    건강하고 행복한 새해 되세요 ^^

  4. Favicon of https://heysukim114.tistory.com BlogIcon *저녁노을* 2021.01.01 11:39 신고

    좋은 책 소개 받네요.

    잘 보고갑니다. 새해 복 많이 받으세요🎁🎁❤❤

  5. Favicon of https://invitetour.tistory.com BlogIcon 휴식같은 친구 2021.01.01 12:13 신고

    인공지대를 사는 아이들에게 정말 어떰게 가르쳐야할지 막막한데 필요한 책이네요.
    잘 보고 갑니다.
    새해 복 많이 받으세요.

  6. 핑구야날자 2021.01.01 19:10

    필요하신 분들에게 좋은 도서가 되겠군요 새해 복 많이 받으세요

  7. 공수래공수거 2021.01.01 19:24

    좋은 나눔 하시는군요
    새해에도 소망하시는 일 이루어지시기 바랍니다.

  8. Favicon of https://uhastory.tistory.com BlogIcon 유하v 2021.01.01 21:53 신고

    앞으로 시대가 어떻게 급변할지 긴장도 되고 기대도 됩니다 ㅎㅎ

  9. 평강줌마 2021.01.03 16:15

    너무 좋은 책이네요.
    새로운 시대를 위해서 아이들과 코딩을 공부하고 있는데......
    좀 더 고민을 해 보아야겠네요.
    공감 꾹 누르고 갑니다.
    2021년에는 더욱더 좋은 일만 가득하시길 바랍니다.

  10. Favicon of https://wondangcom.com BlogIcon 파아란기쁨 2021.01.19 15:48 신고

    === 마감합니다.===

목표

- FileSystemWatcher의 이벤트와 속성을 이해한다.

- 파일을 다루는 방법을 배운다.

- Splitter 사용법을 배운다

 

컴포넌트 설명

FileSystemWatcher : 파일시스템 속성 변경을 확인 할 수 있는 컴포넌트

DirectoryInfo : 디렉토리의 파일과 속성을 가져 올 수 있는 컴포넌트

Splitter : 화면을 분리해 주는 컴포넌트로 분리된 사이즈의 크기를 조정할때 사용됨

 

폼구성

위와 같이 화면 구성하자.

사용된 컴포넌트

상단 : Panel 안에 label,textBox,Button

하단 : groupbox 2개,splitter 1개 , 왼쪽 groupbox 의 Dock 속성을 left, 오를쪽 groupbox 의 속성을 Client 로 설정

왼쪽 groupbox : ListView - Columns 에 헤더 등록 및 View를 Details 로 설정

오른쪽 groupbox : 상단 panel(label 2개,TextBox 1개,ComboBox 1개,Button 2개) , 하단 ListBox

기타 : folderBrowserDialog,saveFileDialog,contextMenuStrip

 

소스코드 구현

1. 경로 버튼을 클릭 했을때 해당 폴더를 선택 후 파일 탐색기에 파일 보기 구현

-쓰레드에서 파일보기(FileView) 구현을 실행 시킨다.

1
2
3
4
5
6
7
8
            if (this.folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                this.listView1.Items.Clear();
                this.txtPath.Text = this.folderBrowserDialog1.SelectedPath;
 
                threadFileView = new Thread(new ParameterizedThreadStart(FileView));
                threadFileView.Start(this.folderBrowserDialog1.SelectedPath); ///선택된 디렉토리를 매개변수로 넘기자.
            }
cs

- FileView 코드 : 속성을 전체 혹은 숨김파일 제외 속성에 따라 파일 목록을 읽어 와서 OnFile Delegate 에 내용을 전달하여 OnFile 에서 리스트뷰에 뿌려주는 역할을 수행하고 하위디렉토리는 다시 들어가서 똑같은 작업을 반복 수행하자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
        private void FileView(object dir)
        {
            DirectoryInfo di = new DirectoryInfo((string)dir);
            DirectoryInfo[] dti = di.GetDirectories();
 
            foreach (var f in di.GetFiles())
            {
                if (HiddenFile == true//전체 파일을 모두 조회한다.
                {
                    Invoke(OnFile, f.Name, f.Length.ToString(),
                        f.CreationTime.ToString());
                }
                else
                {
                    if (!f.Attributes.ToString().Contains(FileAttributes.Hidden.ToString())) // 속성이 숨김파일이 아닐 때만 조회한다.
                    {
                        Invoke(OnFile, f.Name, f.Length.ToString(),
                            f.CreationTime.ToString());
                    }
                }
            }
 
            for (int i = 0; i < di.GetDirectories().Length; i++///하위 디렉토리 파일을 조회 하자.
            {
                try
                {
                    FileView(dti[i].FullName);
                }
                catch
                {
                    continue;
                }
            }
        }
cs

-OnFile 델리게이트 생성 및 구현

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
        Thread threadFileView = null//파일조회 스레드 개체 생성
        private delegate void OnDelegateFile(string fn, string fl, string fc);
        private OnDelegateFile OnFile = null//델리게이트 생성
        bool HiddenFile = true//전체 조회, False 일때는 숨김파일이 아닌경우만 조회
 
        private void Form1_Load(object sender, EventArgs e)
        {
            OnFile = new OnDelegateFile(ListViewAdd); //OnFile 델리게이트에서 ListViewAdd를 실행시키자.
        }
 
        private void ListViewAdd(string fn, string fl, string fc) //리스트뷰에 들어온 데이터를 추가하자 
        {
            string fSize = GetFileSize(Convert.ToDouble(fl));
            this.listView1.Items.Add(new ListViewItem(new string[] { fn, fc, fSize }));
        }
 
        private string GetFileSize(double byteCount) //파일사이즈를 Bytes,KB,MB,GB 단위로 표현하자.
        {
            string size = "0 Bytes";
            if (byteCount >= 1024 * 1024 * 1024)
                size = String.Format("{0:##.##}", byteCount / (1024 * 1024 * 1024)) + " GB";
            else if (byteCount >= 1024 * 1024)
                size = String.Format("{0:##.##}", byteCount / (1024 * 1024)) + " MB";
            else if (byteCount >= 1024)
                size = String.Format("{0:##.##}", byteCount / 1024+ " KB";
            else if (byteCount > 0 && byteCount < 1024.0)
                size = byteCount.ToString() + " Bytes";
 
            return size;
        }
 
cs

 

- 파일 모니터 구현 코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
        private FileSystemWatcher Watcher;
        private bool let = false//더블 모니터 방지
        private delegate void DelegateCreateListBoxItem(string EventName, string DateTime, string FilePath); //델리게이트 선언
 
        private void btnMonitor_Click(object sender, EventArgs e)
        {
            if (this.txtPath.Text == ""return;
 
            if (this.btnMonitor.Text == "모니터 ON")
            {
                this.btnMonitor.Text = "모니터 OFF";
                this.btnSave.Enabled = false;
 
                Watcher = new FileSystemWatcher();
                Watcher.Filter = "*." + this.txtExtension.Text.ToLower();
                Watcher.Path = Environment.ExpandEnvironmentVariables(this.txtPath.Text);
 
                if (this.cbMonitor.Text == "ON")
                    Watcher.IncludeSubdirectories = true;
                else
                    Watcher.IncludeSubdirectories = false;
 
                Watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                                        | NotifyFilters.FileName | NotifyFilters.DirectoryName;
                Watcher.Changed += new FileSystemEventHandler(OnChanged);
                Watcher.Created += new FileSystemEventHandler(OnCreated);
                Watcher.Deleted += new FileSystemEventHandler(OnDeleted);
                Watcher.Renamed += new RenamedEventHandler(OnRenamed);
 
                Watcher.EnableRaisingEvents = true;
            }
            else
            {
                if (Watcher != null)
                {
                    Watcher.Changed -= new FileSystemEventHandler(OnChanged);
                    Watcher.Created -= new FileSystemEventHandler(OnCreated);
                    Watcher.Deleted -= new FileSystemEventHandler(OnDeleted);
                    Watcher.Renamed -= new RenamedEventHandler(OnRenamed);
 
                    Watcher.EnableRaisingEvents = false;
                }
                this.btnMonitor.Text = "모니터 ON";
                this.btnSave.Enabled = true;
            }
 
        }
 
        private void OnRenamed(object sender, RenamedEventArgs e)
        {
            CreateListBoxItem("Renamed", DateTime.Now.ToString(), e.FullPath);
        }
 
        private void OnDeleted(object sender, FileSystemEventArgs e)
        {
            CreateListBoxItem("Deleted", DateTime.Now.ToString(), e.FullPath);
        }
 
        private void OnCreated(object sender, FileSystemEventArgs e)
        {
            CreateListBoxItem("Created", DateTime.Now.ToString(), e.FullPath);
        }
 
        private void OnChanged(object sender, FileSystemEventArgs e)
        {
            if (let == false)
            {
                let = true;
                CreateListBoxItem("Changed", DateTime.Now.ToString(), e.FullPath);
            }
            else
            {
                let = false;
            }
        }
 
        private void CreateListBoxItem(string EventName, string DateTime, string fullPath)
        {
            if (this.lbLog.InvokeRequired)
            {
                DelegateCreateListBoxItem DelView = new DelegateCreateListBoxItem(InvokedCreateListViewItem);
                Invoke(DelView, new object[3] { EventName, DateTime, fullPath });
            }
            else
            {
                InvokedCreateListViewItem(EventName, DateTime, fullPath);
            }
        }
 
        private void InvokedCreateListViewItem(string eventName, string dateTime, string fullPath)
        {
            this.lbLog.Items.Add(eventName + " : (" + dateTime + ") : " + fullPath);
        }
 
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string savepath = this.saveFileDialog1.FileName;
 
                StreamWriter sw = new StreamWriter(savepath);
                foreach (string s in this.lbLog.Items)
                {
                    sw.WriteLine(s);
                }
                sw.Close();
            }
        }
    }
cs

 

- FileSystemWatcher  이벤트 속성

1) Changed : 지정된 Path에서 파일이나 디렉토리가 변경될때 발생

2) Created : 파일이나 디렉토리가 생성될때 발생

3) Deleted : 파일이나 디렉토리 삭제될때 발생

4) Renamed : 디렉토리나 파일 이름이 변경될때 발생

 

- NotifyFilter (조사할 내용 형식)

1) Attributes : 파일 또는 폴더의 특성

2) CreationTime : 파일이나 폴더를 만든시간

3) DirectoryName: 디렉터리의 이름

4) FileName : 파일의 이름

5) LastAccess : 파일 또는 폴더를 마지막으로 연 날짜

6) LastWrite : 파일 또는 폴더를 마지막으로 접근한 날짜

7) Security : 파일 또는 폴더의 보안설정

8) Size : 파일 또는 폴더의 크기

 

 

 

활용

파일의 변경 상태를 모니터링 하면서 변경된 파일을 백업기능 등을 구현 할 수 있다.

 

FileManager.zip
0.05MB

 

 

 

=====================================================

이 자료는 학생들과 특강시간에 만들어 보는 프로젝트입니다.

=====================================================

 

오늘도 최선을 다하는 우리 학생들을 응원합니다.

인천 서구 검단신도시 원당컴퓨터학원

 

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기

예전에 학교 다닐때 수학은 시험용으로 공부를 했기에 재미 있는줄은 몰랐는데~

시험 스트레스 없이 수학 공부를 하니 수학이 재미있네요.~

 

새로움을 깨닫는 재미~

평범함 속에서 알게 모르게 수학은 계속 사용되어 왔었고 그것을 깨닫는 재미~

 

오늘은 그 재미를 더해줄 365수학을 리뷰해 볼까 합니다.

 

이 책을 쓰신 분은 처음에 365일 수학 달력을 만들어 볼까 해서 도전을 하셨다고 해요.~

그 얘기를 들으니 흥미가 진진해 지더라구요...

 

매일 매일을 주제로 하나의 수학을 풀어 나가는 수학 달력이라니~

그 달력을 만드는데 무려 7년의 시간이 걸려서 완성을 했다고 합니다.

 

그것을 계기로 네이버에 365일 수학을 연재 하게 되고 그것을 책으로 출판했다고 합니다.

 

책의 두께를 보고 깜짝 놀라기는 했습니다.

1000 페이지가 넘는 날마다 수학

무려 1000페이지가 넘는 날마다 수학이네요~

 

하지만 날마다 수학이잖아요.^^ 365일 하루에 한가지만 보면 되는데 하루에 3페이지 정도만 보면 되는 것이니 그렇게 무리 될 것 같지는 않네요~~

 


4월 1일

4월 1일은 제가 이 세상에 태어난 날이예요~

어머니가 매년마다 생일이면 수수떡을 해 주셨네요.

저하고 제 바로 위에 형님하고 생일이 딱 이틀차이가 났어요(형님 생일 4월 3일)

그래서 어머니는 꼭 수수떡을 제 생일에 맞춰서 2인분을 해 놓고 제 생일에 절반 사용하고 형님 생일에 1번 사용하고(재사용이기는 했지만 남은것이 아니라 잘 나누어 놓았는데) 그래도 형님은 항상 불만이었죠~

아무래도 갓 만든 수수떡이 더 맛났을테니까요...

 

저한테는 이런 역사적인 날인데~

날마다 수학에서는 이날을 어떻게 표현했을까 맨 먼저 궁금해 지네요.^^

 


- 에르되시-스트라우스 추측

출처-네이버지식백과

현재까지 발견된 책중에서 저자가 정확하게 기록된 가장 오래된 수학 서적에서 2/n 을 서로 다른 단위 분수의 합으로 전개하는 50개의 식을 소개하고 있는데 이 공식을은 아마도 지금의 구구단과 비슷한 공식이었던것 같다고 합니다.

 

이렇게 여러 이집트 파피루그에서 발견된 사실을 기념하여 서로 다른 단위분수의 합을 이집트 분수라고 하는데 1948년 형가리 수학자 에르되시와 독일계 미국 수학자 스트라우스는 이렇나 이집트 분수와 관련된 가설을 하나 세웠는데 위의 기록은 개수의 제한 없이 여러 개의 단위 분수로 분해하는 것이지만 n>=3 인 경우 4/n은 정확히 세개의 서로 다른 단위분수의 합으로 표현될수 있다고 생각했는데 그것이 에르되시-스트라우스의 추측입니다.

 

n>=3일때 모든 분수는 

4/n=1/L + 1/M + 1/N  

위와 같이 표현된다.

 

이 사실은 컴퓨터에 의해 n<10^17 인 경우에도 옳다는 것이 확인되었으나 일반적인 n에 대해서는 아직 해결 되지 않았다고 합니다.

 


우와~ 너무 재미 있지 않나요? 저의 역사 속에 이집트 분수와 에르되시-스트라우스의 추측이 숨어 있었다니~

이렇게 깨알같은 재미가 솔솔 흘러 나오는 날마다 수학~

 

오늘은 제 생일에 관련된 수학을 살펴 보았는데요...

내일은 제 와이프 생일에 관련된 수학을 살펴 볼까 하네요.^^

그 다음은 큰아들 생일, 작은 아들 생일~

 

이렇게 의미 있는 날들과 접목해서 하루 한개씩 하나 하나 도전을 하다 보면 수학자처럼 생각하는 법이 저절로 길러 질까요.^^

 

2021년에는 잠 자기전 하루 한개씩 수학에 도전을 해 볼까 합니다.

 

이 책은 예스24리뷰어 클럽에서 제공받아 읽게 되었는데요.~

새해에 즐거움을 한가득 주는 새해맞이 선물인것 같네요.^^

 

 

YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다.

 

 

 

검단신도시 원당컴퓨터학원

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. 핑구야 날자 2020.12.29 06:45

    수학은 꾸준히 공부하는게 제일인 거 같아요

  2. Favicon of https://invitetour.tistory.com BlogIcon 휴식같은 친구 2020.12.29 10:06 신고

    하루에 하나씩 이야기로 풀어보는 수학책이군요.
    재밌어도 수학, 어려울것 같은데요? ㅎ

  3. Favicon of https://lsmpkt.tistory.com BlogIcon 가족바라기 2020.12.29 22:17 신고

    하루에 한문제씩 푸는건 괜찮을것같아요

  4. 공수래공수거 2020.12.30 05:36

    하루 하나씩..
    이렇게 하면 수학과 친해질수 있겠네요.^^

  5. Favicon of https://richwnaak.tistory.com BlogIcon 평강줌마 2020.12.30 07:48 신고

    하루에 한 개씩 수학 이야기를 알아가는 것도 재미있는 일 중 하나이네요.
    한 권 소장해야겠어요.*^^*
    행복한 수요일 보내세요.

  6. 2020.12.30 08:56

    비밀댓글입니다

  7. Favicon of https://paran2020.tistory.com BlogIcon H_A_N_S 2020.12.30 09:16 신고

    아~~저는 수포자라 수학 얘기만 들으면 경끼가 나요ㅋㅋ 오늘 하루도 즐거운 시간 보내세요ㅎ

  8. Favicon of https://happy4jhouse.tistory.com BlogIcon 포제이네♡ 2020.12.31 15:53 신고

    우와 1000페이지라니.. 하루 하나씩 하다보면 다 할 수 있겠죠^^;

Convex Hull trick 란

Convex Hull trick 란 Convex Hull(블록껍질) 알고리즘과는 다른 알고리즘이다.

최적의 값을 찾아가는 형태가 Convex Hull 을 닮아서 Convex Hull trick 라고 알려져 있는데~

Convex Hull Optimization 이라고도 한다.

이 알고리즘은 특정 점화식 꼴을 가지는 동적계획법에서 시간을 줄이는 방법이다.

일차 함수식이 위와 같이 여러개가 들어 오는 경우

각 x의 입장에서 최솟값을 찾는 알고리즘

 

동적알고리즘에서 다음과 같은 형태의 점화식 작성시 사용됨

dp[i] = min(dp[j] + a[i]b[j])( 0<=j < i)

여기서 y = ax + b 와 같은 형태를 띄게 되는데

a[i] 는 x 에 해당하는 상수값을 의미

b[j] 는 a에 해당하는 j값에 의해 변하는 값을 의미

dp[j] 는 각 직선에서 b 에 해당하는 변하는 값을 의미

여기서 x는 고정값이고 a와 b 의 값이 변하는 값인데 해당하는 x 값 위치에서 가장 최선의 a와 b를 찾는 것이 Convex Hull Trick 알고리즘이다.

구현 방법은 아래 문제를 해결하면서 확인을 하자.

 

문제풀이

백준- www.acmicpc.net/problem/13263

 

13263번: 나무 자르기

첫째 줄에 n(1 ≤ n ≤ 100,000)이 주어진다. 둘째 줄에는 a1, a2, ..., an이, 셋째 줄에는 b1, b2, ..., bn이 주어진다. (1 ≤ ai ≤ 109, 0 ≤ bi ≤ 109) a1 = 1이고, bn = 0이며, a1 < a2 < ... < an, b1 > b2 > ... > bn을 만족

www.acmicpc.net

나무자르기 문제가 대표적인 Convex Hull Trick 을 사용하는 문제이다.

이 문제를 처음 접할때 이게 왜 직선의 방정식인지 이해가 안 가는 경우가 발생을 하는데~

이 문제의 두번째 예를 살펴 보자

5

1 2 3 10 20 30

6 5 4 3 2 0 

이 문제를 풀기 위해서 접근을 해 보면

1의 나무를 자르는데는 비용이 발생하지 않지만 1의 나무를 잘라야만 충전을 할 수가 있기 때문에 1을 먼저 잘라야 한다.

30의 나무를 자르고 나면 그 다음 부터는 0의 비용으로 나무를 자를 수 있다.

따라서 1의 나무를 먼저 자른후에 30을 자른다고 하면 30을 자르는 비용은 6 * 30 = 180 의 비용이 된다.

그 다음 부터는 0의 비용으로 충전을 할 수 있으므로 180의 충전 비용으로 나무를 모두 자를수 있다.

그런데 그것이 가장 좋은 방법일까?

1을 먼저 자른후

2를 자르는 비용을 생각하자 => 2 * 6= 12

3을 자르는 비용을 생각하자 => 12 + (3*5) = 27 또는 3 * 6 = 18 중 작은 값 18을 선택 할 수 있다.

10을 자르는 비용을 생각하자 => 18 + (10*4) = 58 또는 12 + (10*5) = 62 또는 10 * 6 = 60 중에서 58을 선택 할 수 있다.

20을 자르는 비용을 생각하자 => 58 + (20*3) = 118 또는 18 + (20*4) = 98 또는 12 + (20*5) = 112 또는 (20*6) = 120 중에서 98 을 선택 할 수 있다.

30을 자르는 비용을 생각하자 => 98 + (30*2) = 158 또는 58 + (30*3) = 148 또는 18 + (30*4) = 138 또는 12 + (30*5) = 162 또는 30* 6= 180 중에서 가장작은 138을 선택 할 수 있다.

이렇게 생각해 보면 다이나믹인것을 확인 할수 있다.

dp[i] = min(dp[j] + a[i]b[j]) 와 같은 형식이 되는 것을 확인 할 수 있다.

하지만 i의 크기가 100000 이라서 이렇게 다이나믹으로 해결 할때 시간초과가 발생하는 것을 알 수 있다.

하지만 점화식이 좀전에 설명한 Convex Hull Trick 에 해당하는 직선의 방정식으로 표현 되는 것을 확인 할 수 있다.

y=ax + b 와 같은 직선의 방정식에서 해당 x의 위치에서 a와 b의 최적값을 찾는 데 이때는 이진탐색을 사용해서 해결할 수가 있다.

소스코드를 살펴 보면 다음과 같이 해결이 가능하다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <vector>
#include <algorithm>
 
 
#define MAX 100010
 
using namespace std;
 
struct Line{
    long long a,b; // y=ax+b 형태의 a,b 값
 
    double crossPos; // 앞에 나오는 라인과 만나는 x 위치중에서 가장 작은 x 값을 저장하자.
};
 
vector <Line> S;
int a[MAX],b[MAX],n;
long long dp[MAX];
 
double cross(const Line &l,const Line &r)
{
    /// left 와 right 가 서로 만나는 지점을 찾는 것이므로
    /// l.a * x +l.b = r.a * x + r.b 이다
    /// x = (r.b - l.b)/(l.a-r.a) 이다.
    return (r.b - l.b)/(l.a - r.a);
}
 
int main()
{
    cin.tie(NULL);
    cout.tie(NULL);
    ios::sync_with_stdio(NULL);
 
    freopen("input.txt","r",stdin);
 
    cin >> n;
 
    for(int i=0;i<n;i++cin >> a[i];
    for(int i=0;i<n;i++cin >> b[i];
 
    /// 0번 위치의 값은 비용이 들지 않으므로 1번 부터 계산해 주면 된다.
    Line imsi;
    for(int i=1;i<n;i++){
        imsi.a = b[i-1];  /// min(dp[j] + a[i]b[j] 에서 y = ax + b 형태에서 a에 해당하는 값은 b[j] 에 해당한다.
        imsi.b = dp[i-1]; /// b에 해당하는 값은 dp[j] 에 해당한다.
        imsi.crossPos = 0;
 
        while(S.size()>0)
        {
            ///기존에 들어온 라인이 있다면 가장 마지막에 입력된 라인과의 교점을 구해 보자.
            imsi.crossPos=cross(imsi,S.back());
 
 
            if(imsi.crossPos<S.back().crossPos)
            {
                S.pop_back(); /// 자신과 만나는 위치가 그 이전에 만나는 값보다 더 작다고 하면 굳이 있을 필요가 없다.
            }
            else break;
        }
        S.push_back(imsi);
 
        long long x= a[i];
        int pos =0;
        int left=0;
        int right=S.size() -1;
        int mid;
        /// 현재 버퍼에서 가장 가까운 값을 찾아서 dp 테이블에 넣어 주자.
        while(left<=right)
        {
            mid = (left+right)/2;
            if(S[mid].crossPos < x)
            {
                pos = mid;  /// 만나는 점이 내 위치보다 작다면 일단 선택해 주자.
                left = mid+1;
            }
            else
            {
                right = mid - 1;
            }
 
        }
        dp[i]=S[pos].a * x + S[pos].b;
    }
 
    cout << dp[n-1];
 
    return 0;
}
 
cs

 

if(imsi.crossPos<S.back().crossPos)
{
       S.pop_back(); /// 자신과 만나는 위치가 그 이전에 만나는 값보다 더 작다고 하면 굳이 있을 필요가 없다.
}

부분의 의미는 

위의 그림에서 3번과 4번을 살펴 보면 3번이 그 이전에 2번을 만나는 위치가 4번이 3번을 만나는 위치보다 더 크기 때문에 굳이 3번 라인을 살펴볼 필요는 없다.

이렇게 하면 x값으로 정렬되어 있는 데이터가 들어갈 수 밖에 없으므로 가장 적합한 위치의 값을 이진탐색으로 탐색이 가능하다.

 

 

인천 서구 검단신도시 원당컴퓨터학원

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기

 

42 Seoul 교육생 모집

 

가. 모집인원 : 본 과정 교육생 연 500명 선발

나. 자격요건 : 교육시작(1개월 집중교육과정)시 민법상 성인 또는 고등학교 졸업 이상 학력인자로 국적은 무관*

* 단, 교육 지원금 지급은 대한민국 국적을 가지고 있는 자에 한함

다. 지원할 수 없는 경우

1) 교육(1개월 집중교육과정) 시작 기준 군 복무 중인 자

2) 교육(1개월 집중교육과정) 시작 기준 소프트웨어 마에스트로 연수생, 혁신성장청년인재집중양성사업에 참여 중인 교육생

3) 타 정부지원사업의 참여를 제한하는 과정에 참여 중인 자

4) 본 과정에서 제적된 자

5) 1개월 집중교육과정 기존 참여자(중도 포기자 포함)

 

전형일정

가. 온라인테스트 (상시) : 지원 홈페이지(https://42seoul.kr/apply)

나. 2021년 체크인미팅 일정

 

다. 2021년 1개월 집중교육과정(La Piscine) 및 본과정 일정

선발방법

① 온라인 테스트(논리력테스트, 기억력테스트)

(1) 논리력 테스트와 기억력테스트로 구성되어 일정 단계 이상으로 통과해야 합격

(2) 온라인 테스트 응시 기회는 1번으로 재 응시할 수 없음

(3) 크롬 브라우저 환경에 최적화되어 있으니 크롬 브라우저를 통해 응시해야 함

(4) 온라인 테스트를 응시할 때에는 다른 응용프로그램을 모두 중지 후 테스트에 응할 것을 권장

(5) 온라인 테스트는 약 2시간 정도 소요되며 중간에 멈출 수 없음

(6) 온라인 테스트 합격 여부는 절대평가로 테스트 종료 시점으로부터 48시간 안에 이메일로 전송

(7) 온라인 테스트 합격자만 다음 절차로 진행 가능

 

② 체크인미팅 온라인 사전 신청

(1) 온라인테스트 합격자중 오프라인 체크인미팅 일자에 참석이 가능한 사람에 한해서 온라인 사전 신청을 선착순으로 등록

※ 체크인미팅 온라인 사전 신청을 선착순으로 등록하지 못한 경우 다음 회차 체크인미팅 온라인 사전 신청에 계속 등록 할 수 있음

(2) 선착순 등록 완료 후 개인 일정 등으로 체크인미팅 당일 참석이 불가능한 경우에 체크인미팅 참석일 전까지 취소 가능하며 다음 회차의 체크인미팅에 선착순으로 등록할 수 있음

(3) 선착순 등록을 하지 못하고 대기자번호를 부여받은 경우 정원(선착순 등록 완료인원)내 인원 중 취소자가 발생할 때 대기번호 순서대로 자동진입 됨

※ 체크인미팅 당일 시작시간 전까지 대기자인 경우 체크인 미팅 참석이 불가능하며 다음 회차에 열리는 체크인 미팅 온라인 신청을 다시 선착순으로 신청 할 수 있음

 

③ 체크인미팅

(1) 신청한 일자에 맞춰 신분확인이 가능한 신분증 혹은 신분증명서(공공시험에서 인정되는 것에 한함)를 지참 후 방문하여 본인확인을 하고 지원사이트에서 발급된 QR코드를 인증

(2) 미성년자의 경우 검정고시 및 고등학교 졸업증명서 등으로 신청조건을 확인

 

④ 1개월 집중교육과정(La Piscine) 온라인 사전 신청

(1) 체크인미팅에 참석하여 본인확인이 완료된 인원 중 1개월 집중교육과정 일자에 참석이 가능한 사람에 한해서 온라인 사전 신청을 선착순으로 등록

※ 단, 1개월 집중교육과정 온라인 사전 신청을 선착순으로 등록하지 못한 경우 다음 회차 1개월 집중교육과정 온라인 사전 신청에 계속 등록 할 수 있음

(2) 1개월 집중교육과정 신청 완료 후 참석하지 않은 경우 지원사이트에 등록된 계정이 삭제됨

※ 해당 단계는 계정이 삭제되어 재 신청이 불가능하니 신중하게 온라인 사전 신청을 진행하시길 바랍니다

 

⑤ 1개월 집중교육과정(La Piscine)

(1) 시작일 등록기한 내에 반드시 참석하여 ID 를 생성해야 하며 참석하지 않아 ID 생성을 하지 않은 경우 계정 삭제 및 재지원 불가함

(2) 24시간 개방되어 주말포함 약 4주 교육을 진행함

 

⑥ 본 과정 선발 및 등록(Kick off)

(1) 본 과정 합격자 발표는 1차, 2차 1개월 집중교육과정이 모두 종료된 후 통합하여 발표함

(2) 선발조건은 1개월 집중교육과정(La Piscine) 에서 진행하는 개인, 팀프로젝트, 시험, 패널티 요소, 가산요소 등을 합산한 총점 순으로 선발함

(3) 예비합격생을 둘 수 있으며 본과정 등록(kick off)를 신청하지 않는 등 결원이 발생하면 예비합격생 대기순으로 개별통지함

 

⑦ 본 과정

(1) 최대 23개월을 지원하며 공통트랙과 전문트랙으로 구성

(2) 공통트랙 완료 후 전문 트랙 선택 가능 (전문 트랙 진행 시, 기업, 커뮤니티와의 협력 프로젝트 기회에 참여할 수 있음)

 

⑧ 본 과정 오리엔테이션

(1) 창의력, 자기주도 학습 의욕을 고취 시키며 합격생 간 상호 교류 및 친밀감을 형성하는 프로그램 및

(2) 42서울에 대한 혜택 및 로드맵 등 설명

 

 

 

작년에 42서울 온라인 테스트를 치룬 학생들이 있었는데요~

2019/11/08 - [미래IT산업/미래직업] - 42 서울(42SEOUL) 온라인 테스트 후기


작년에는 온라인 테스트 기간이 정해져 있었습니다.

올해 부터는 온라인테스트는 상시 시험으로 운영되고 있습니다.

온라인 테스트 홈페이지 - https://42seoul.kr/apply

온라인테스트 통과된 분들 대상으로 지금처럼 교육생 모집 기간에 신청을 해서 42서울 교육생이 되는 시스템으로 운영 되고 있습니다.

42서울에 관심이 있는 분들이라면 지금이라도 온라인테스트에 도전해 보시고~
교육생 모집 신청 기간에 신청을 하시면 될것 같네요.

오늘도 최선을 다하는 모든 분들을 응원합니다.

검단신도시 내 원당컴퓨터학원

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. 공수래공수거 2020.12.25 07:59

    관ㅅ미있는 학생들 응모하면 좋겠습니다^^

  2. Favicon of https://bubleprice.tistory.com BlogIcon 버블프라이스 2020.12.25 10:18 신고

    2021년 42서울 교육생 모집 일정 안내글을 공유해주셧군요?
    학생분들이 많이 참여하셨으면 좋겠습니다^^
    메리크리스마스

  3. 핑구야날자 2020.12.25 12:10

    꾸준히 준비한 분들에게 좋은 정보가 되겠네요 메리 크리스마스

  4. Favicon of https://invitetour.tistory.com BlogIcon 휴식같은 친구 2020.12.25 18:09 신고

    서울시에서 성인고 고교졸업자를 대상으로 좋은 교육을 하는군요.
    즐거운 성탄 보내세요

  5. Favicon of https://lsmpkt.tistory.com BlogIcon 가족바라기 2020.12.25 18:34 신고

    성인들도 교육생을 모집하는군요
    좋은 기회 많이들 참여하면 좋겠네요

  6. Favicon of http://https://pangyione.com/ BlogIcon 청결원 2020.12.26 18:55

    포스팅 잘 보고 갑니다
    즐거운 주말 보내세요~

  7. Favicon of https://richwnaak.tistory.com BlogIcon 평강줌마 2020.12.27 17:19 신고

    좋은 정보이네요.
    이번을 계기로 전문적인 지식을 쌓고 스펙도 키워나갔으면 좋겠네요.

  8. Favicon of https://uhastory.tistory.com BlogIcon 유하v 2020.12.27 17:40 신고

    공부하고 있는 분들에게 아주 좋은 기회가 되길 바랍니다 ㅎ

  9. Favicon of https://heysukim114.tistory.com BlogIcon *저녁노을* 2020.12.28 06:37 신고

    잘 보고가요.
    오늘 글은 보호된 글이라..안 보이네요.ㅠ.ㅠ

 

AI와 로봇의 융합아이디어로 생활 속 문제를 해결하는 아이디어 온라인 제출 탐구대회 안내입니다.

직접 구현하는 것이 아니고 좋은 아이디어가 있으면 아이디어만으로 선발을 하는 대회 입니다.^^

 

실제로 아이디어가 중요한 만큼 학생들의 창의력을 확인해 보는 대회인것 같네요.

 

이렇게 아이디어를 보내면 연구원 10명이 실제로 로봇으로 구현해서 온라인 심사단의 시연회를 통해 심사를 통해 로봇 상품이 펑펑 쏟아 진다고 하네요.^^

 

자신이 만들어 보고 싶은 로봇이 있었다면 한번 도전을 해 보시길 바랍니다.

 

참가 대상은 초등부/중고등부 입니다.

 

자세한 내용은 아래 링크를 확인하시길 바랍니다.

docs.google.com/forms/d/e/1FAIpQLSe_ipFXpjrAn6cFpPMbVlY-moKIRfZPhy2woIpdJfNZrc3jPA/viewform

 

 

 

검단신도시 원당컴퓨터학원

 

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. 핑구야 날자 2020.12.22 06:52

    인공지능은 미래 먹거리입니다 많은 분들이 관심을 갖고 있어서 인기가 많을 것 같군요

  2. 공수래공수거 2020.12.22 07:21

    내년 대회가 무사히 치뤄졌으면 좋겠습니다.

  3. Favicon of https://richwnaak.tistory.com BlogIcon 평강줌마 2020.12.22 07:36 신고

    너무 재미있는 대회이네요.
    아이에게 한 번 이야기는 해 주어야겠어요.*^^*

  4. Favicon of https://uhastory.tistory.com BlogIcon 유하v 2020.12.22 12:20 신고

    기가막힌 아이디어들이 나오겠네요 ㅎㅎ

  5. Favicon of https://heysukim114.tistory.com BlogIcon *저녁노을* 2020.12.22 13:48 신고

    오...좋은데요. 인공기능...미래의 먹거리..

    잘 보고가요

  6. Favicon of https://dragonphoto.tistory.com BlogIcon 드래곤포토 2020.12.22 15:11 신고

    건강한 하루되세요 ^^

  7. Favicon of https://invitetour.tistory.com BlogIcon 휴식같은 친구 2020.12.22 16:51 신고

    어떤 아이디어가 나올지 궁금해지네요.
    잘 보고 갑니다~ 즐거운 시간 보내세요

  8. Favicon of https://lsmpkt.tistory.com BlogIcon 가족바라기 2020.12.22 21:19 신고

    참신한 아이디어가 나오겠네요

  9. Favicon of https://pangyione.com/ BlogIcon 청결원 2020.12.23 15:31

    포스팅 잘 보고 갑니다
    좋은 하루 보내세요~

  10. Favicon of https://happy4jhouse.tistory.com BlogIcon 포제이네♡ 2020.12.25 22:06 신고

    좋은대회였는데 늦게 알았네요. 구독하고 갑니다^^

  11. Favicon of https://deborah.tistory.com BlogIcon Deborah 2020.12.26 12:51 신고

    탐구 대회 참여 해서 좋은 시간을 보내면 좋을 것 같아요. 도전을 해보면서 실력도 늘고 합니다.

2020년 12월 18일 ~ 12월 21일 : 첫번째 콘테스트

2021년 1월 22일 ~ 1월 25일 : 두번째 콘테스트

2021년 2월 26일 ~ 3월 1일 : 세번째 콘테스트

2021년 4월 2일 ~ 4월 5일 : US Open

 

위와 같은 일정으로 미국정보올림피아드 대회가 개최 됩니다.

 

이 대회를 통해서 미국올림피아드 대표선수를 뽑는데요.

이 대회는 미국학생 뿐 아니라 전세계 학생들이 응시를 할 수 있는 기회가 제공되고 있습니다.

 

작년에 저희 원의 학생도 응시를 해서 Gold 등급을 취득한 학생이 있는데요~

 

미국정보올림피아드 대회에 응시하기 위해서는 다음과 같은 절차로 응시를 하면 됩니다.

 

1. 회원 가입

Register for New Account 를 클릭하여 회원가입

(회원가입시 국적은 KOR 을 입력하시면 됩니다.)

2. 이메일로 비밀번호가 오면 비밀번호로 로그인 후에 비밀번호 변경

 

이렇게 간단하게 회원 가입으로 응시를 할 수 있습니다.

 

미국유학을 준비하는 학생들이라면 미국정보올림피아드가 미국 유학에 도움이 된다고 합니다.

 

대회 응시는 응시기간 중 4시간의 시간을 확보 하신 후에 그 4시간동안만 문제를 풀으실 수 있습니다.

이 대회는 다음과 같은 등급제로 운영되고 있습니다.

Bronze->Silver->Gold->Platinum

 

처음 도전하실때는 Bronze 로 응시 하실 수 있고 1차 컨테스트에서 Silver 승급을 한 후에 2차 컨테스트에서 Silver에 응시 할 수 있습니다.

 

승급대상은 각 레벨에서 700~800 점대에서 승급이 된다고 하는데 각 레벨에 따라 편차가 존재 합니다.

 

※ 주의사항은 다음과 같습니다.

한국정보올림피아드는 표준입출력이지만 미국정보올림피아드는 파일 입출력 방식입니다.

따라서 C/C++ 을 사용하시는 분이시라면

freopen("input.txt","r",stdin);

freopen("output.txt","w",stdout);

과 같이 파일을 표준입출력으로 바꿀수 있는 함수를 사용해 주시면 기존과 동일하게 표준입출력 함수를 사용하실 수 있습니다.

 

사용가능언어 - C/C++,JAVA,Python 을 사용할 수 있습니다.

 

출제문제는 3문제로 각 문제당 333점 이며 3문제 모두 맞추는 경우 1000점 만점

 

미국정보올림피아드에 관심이 있는 분들의 많은 도전을 바랍니다.

 

사이트 주소 : www.usaco.org/

 

USACO

IOI 2020: 1st Place for Third Year in a Row! Congratulations to Walden Yan (gold medal), Danny Mittal (silver medal), Xinyang (Alan) Chen (gold medal), and William Lin (gold medal, 1st place individual winner), who represented the USA at the 2020 Internati

www.usaco.org

 

오늘도 최선을 다하는 모든 학생들을 응원합니다.

 

인천 서구 원당컴퓨터학원

사업자 정보 표시
원당컴퓨터학원 | 기희경 | 인천 서구 당하동 1028-2 장원프라자 502호 | 사업자 등록번호 : 301-96-83080 | TEL : 032-565-5497 | Mail : icon001@naver.com | 사이버몰의 이용약관 바로가기
  1. 핑구야날자 2020.12.18 06:50

    좀 더 많은 경험을 하는 것이지 실력 향상에 도움이 되겠지요

  2. 공수래공수거 2020.12.18 08:09

    한국에서도 응시할수가 있군요^^

  3. Favicon of https://invitetour.tistory.com BlogIcon 휴식같은 친구 2020.12.18 12:13 신고

    우리나라 학생들도 도전해서 좋은 성과를 내면 좋겠습니다.

  4. Favicon of https://richwnaak.tistory.com BlogIcon 평강줌마 2020.12.18 12:14 신고

    미국올림피아드도 도전할 수 있군요.
    멋진 대회에 도전하는 우리나라 학생들을 응원합니다.

  5. Favicon of https://deborah.tistory.com BlogIcon Deborah 2020.12.18 21:56 신고

    오 이런 곳에 꼭 참여할 학생들은 좋은 성적을 냈으면 합니다. 화이팅입니다.

  6. Favicon of http://https://pangyione.com/ BlogIcon 청결원 2020.12.19 07:36

    포스팅 잘 보고 갑니다
    날씨가 많이 추워졌네요 건강유의 하시고
    즐거운 주말 보내세요~

  7. Favicon of https://bubleprice.tistory.com BlogIcon 버블프라이스 2020.12.19 10:23 신고

    오! 미국정보올림피아드 대회안내 글을 공유해주셧군요? 우리나라 학생들도 대회에 참여해서 좋은성과를 냈으면 좋겠습니다

  8. Favicon of https://dragonphoto.tistory.com BlogIcon 드래곤포토 2020.12.21 08:46 신고

    즐거운 월요일 되세요 ^^

  9. Favicon of https://lsmpkt.tistory.com BlogIcon 가족바라기 2020.12.22 12:56 신고

    멋진대회 많이들 참석하면 좋겠네요

+ Recent posts