전체 글

개발은 좋은데 뭘로 개발할까
알고리즘 (PS)/BOJ

[BOJ][Python3/PyPy3] 15553 - 난로

아무리 고민해봐도 해답을 알 수 없었던 문제였던 난로 문제에 대해 정리해보고자 한다. (결국 다른 사람의 아이디어를 참고하여 내 나름대로의 방법으로 풀었다) 당연히 처음에 떠올렸던 풀이는 시간 간격별로 잘라서 비교하는 것이었는데, 처음에는 그 방법으로 풀 수 없다고 생각했다. 단순히 인접한 친구의 방문 시간 간격이 길 수록 성냥을 먼저 쓴다고 생각하기에는 그렇게 소비한 성냥 때문에 오히려 더 많은 시간에 난로를 지펴야 하는 것 아닌가 하는 생각을 했다. 사실 문제를 풀면서 계속 헷갈렸던 것이, 친구가 올 때까지 난로를 핀다는 이상한 생각에 계속 사로잡혀 있었다. 가령 다음과 같이 친구가 방문을 하는 상황에 성냥이 2개 있다고 하자. 최적해의 알고리즘대로라면 '10' 시간에 방문하는 친구가 올 때 난로를 ..

개인 프로젝트/간단한 프로젝트

[개인프로젝트] BOJ 크롤링을 통한 동아리 출석체크 보조 프로그램 제작

겨울 방학동안 연합 알고리즘 스터디 동아리 활동을 하게 됐다. 동아리 활동은 알고리즘 강의를 듣고 BOJ에 올린 연습문제를 푸는 것이다. 연습문제 풀이 여부를 통해 출석체크를 한다. 이번에 나는 동아리 멘토의 역할로 일정 동아리원을 담당하여 출석체크를 하는 역할을 맡게 되었다. 그런데 문제점이 있었다. 현재 스터디 구성원이 총 300명 가까이 되는데, 그 중에 내가 담당한 스터디원은 약 30명이다. 그리고 백준 연습문제는 스코어보드 형식이기 때문에, 먼저 문제를 다 푼 사람 순서대로 정렬된다. 백준 연습문제의 300명치 스코어보드를 보고 내가 담당한 30명을 골라내어 일일히 체크한다..? 사실 30명 정도면 그렇게 많은 사람도 아니고, 실제로 300명이 모두 출석을 다하지는 않기 때문에 생각보다 오래 걸..

인턴/델파이

[델파이] 1. 델파이 프로젝트의 구성

인턴을 하면서 스스로 공부하고, 회사에서 배운 델파이 관련 내용과 개인적으로 느낀 점을 정리하고자 쓴 게시글 입니다. 여름 방학 때는 정말 기본적인 개념들을 배우고(SQL, 네트워크 개념) 회사에서 사용하는 델파이를 가볍게 맛만 봤다면, (사실 겉을 핥지도 못한 수준이었다) 이번 겨울 방학 때는 본격적으로 델파이를 배우기 시작했다. 델파이를 배우기 전에 학교에서 자바를 수강한 건 정말 신의 한수였다. 자바를 공부한 덕분에 GUI에 대한 기본적인 구현 방법을 알 수 있었다. (컴포넌트의 개념, 이벤트의 개념, 이벤트 처리 등등) 여름 방학때는 이런 것을 전혀 모르고 설명을 듣다보니 와닿지가 않았는데, 공부하고 다시 들으니 이해가 매우 잘 됐다. 자바를 배울 때는 코딩만을 사용해서 윈도우 창을 디자인하고 컴..

Android/Java

[안드로이드] 프래그먼트(Fragment)

본 게시글은 'Do It! 안드로이드 프로그래밍 개정7판' / '단계별로 배우는 안드로이드 프로그래밍' 두 권의 교재를 통해 학습한 내용을 스스로 정리하는 목적으로 작성한 게시글 입니다. *프래그먼트 내용은 '단계별로 배우는 안드로이드 프로그래밍'에는 없는 내용입니다. Fragment, 우리말로 '파편' 이라는 뜻이다. 안드로이드에서 프래그먼트는 '부분화면'을 만드는데 사용된다. 또 각각의 프래그먼트는 액티비티처럼 독립적이어서 따로 관리할 수 있다. 프래그먼트는 반드시 액티비티 '위에' 존재해야한다. 액티비티로 만든 화면을 '프래그먼트'라는 부분 단위로 쪼개 관리하는 것이기 때문이다. 프래그먼트가 동작하는 시점은 메모리에 생성된 시점이 아닌, 액티비티 위에 존재하게된 시점이다. 프래그먼트는 '프래그먼트매..

Android/Java

[안드로이드] 인텐트 활용 : 데이터 교환(2)

본 게시글은 'Do It! 안드로이드 프로그래밍 개정7판' / '단계별로 배우는 안드로이드 프로그래밍' 두 권의 교재를 통해 학습한 내용을 스스로 정리하는 목적으로 작성한 게시글 입니다. Do It 안드로이드 프로그래밍의 '도전! 08'을 해결해보고자 한다. 우선 로그인 화면, 메인메뉴 화면, 서브메뉴 화면을 만들어 주었다. 로그인 화면에서 로그인 버튼을 눌렀을 때 메인메뉴로 갈 수 있게 리스너를 등록한다. 이때 아이디와 비밀번호 모두 입력이 되어 있는지 체크해야 한다. public class MainActivity extends AppCompatActivity { public final int LOGIN = 101; EditText editTextId, editTextPW; @Override prote..

Android/Java

[안드로이드] 인텐트 활용 : 데이터 교환(1)

본 게시글은 'Do It! 안드로이드 프로그래밍 개정7판' / '단계별로 배우는 안드로이드 프로그래밍' 두 권의 교재를 통해 학습한 내용을 스스로 정리하는 목적으로 작성한 게시글 입니다. Do It! 안드로이드 프로그래밍 개정 7판을 읽으면서 느낀 점은 이것 저것 알려주는 내용이 많은 건 좋은데, 아직 설명도 제대로 안한 뒷 내용을 끌어와서 설명하다보니 이해도 제대로 못한 채로 책 속 코드만 그대로 따라서 치고 있는 나를 보게 된다. 그 코드에 대한 설명이 제대로 되지 않다보니 이해는 안됐지만 하라는 대로 했더니 책에 나온 대로 결과가 나왔어요! 짠! 이럴 때가 있다. 개인적으로 이번 인텐트 챕터에서 그 문제점이 제일 와닿았다. 큰 흐름도를 보고나서, 대충 어떤 식으로 진행이 될지를 파악한다음 보면 더 ..

Android/Java

[안드로이드] 인텐트의 개념

본 게시글은 'Do It! 안드로이드 프로그래밍 개정7판' / '단계별로 배우는 안드로이드 프로그래밍' 두 권의 교재를 통해 학습한 내용을 스스로 정리하는 목적으로 작성한 게시글 입니다. 인텐트(Intent) : 개발자의 의도(intent)가 들어간, 앱 구성요소가 해야 할 작업을 시스템에 요청하는 자바 객체. 안드로이드의 구성요소 중 '액티비티', '서비스', '브로드캐스트 수신기'는 인텐트에 의해 시작된다. Intent intent = new Intent(); // intent 객체 생성 // ... 중략 ... startActivity(intent); // 액티비티의 실행을 시스템에 요청 startService(intent); // 서비스의 실행을 시스템에 요청 sendBroadcast(intent..

개인 프로젝트/[2020] 카카오톡 봇

[카카오톡 봇 만들기] 4. 이야기를 들어주는 봇 만들기(1) : 문장분석(2)

지난 글의 마지막처럼 조사를 추가하여 문장 성분을 분석해보았다. 주어, 목적어, 부사 세가지를 분석할 수 있게 만들었고 조사는 (이/가/께서, 을/를, 에,에서) 를 사용하는 것으로 하였다. const scriptName = "test"; const manager = "커맨드봇"; const master = "이름"; const bot_name = '버듀(가명)'; //const set_msg = require('auto_answer'); //DataBase.setDataBase("dict/"+"words_josa"); //var let test = true; let date; let msg_send; let msg_introduce = "안녕하세요! 저는 "+ master + "님의 봇 '" + bot..

개인 프로젝트/[2020] 카카오톡 봇

[카카오톡 봇 만들기] 4. 이야기를 들어주는 봇 만들기(1) : 문장분석(1)

이제 본격적으로 내가 원하는 "나와 대화할 수 있는 봇" 만들기에 도전해보려고 한다. 제일 먼저 떠오른 대화의 시작 문장은 "야, 뭐해?" 이다. 우선 이 문장을 다음과 같이 분석해보았다. "야," => 독립어(호격) "뭐해?" = "무엇을 해?" => 목적어 + 서술어 "야," 를 독립어로 처리한 후 호격으로 받아들이는 것은 간단하게 아이디어가 떠올랐지만,, 도저히 저 "뭐해?" 를 처리할 방법이 떠오르지 않았다. '뭐' 가 '무엇' 의 준말이니 이걸 복원하는 것은 가능하다고 해도. 뭐가 좋아? 뭐 먹을래? 처럼 "뭐" 는 목적어말고도 다른 위치에 얼마든지 올 수 있었다. 조사가 있다면 조사로 판단하고 싶지만, "뭐를 먹을래?" 같은 문장은 구어체에서 잘 안쓴다. 띄어쓰기로 판단한다는 생각도 해보았지만..

개인 프로젝트/[2020] 카카오톡 봇

[카카오톡 봇 만들기] 3. 카카오링크 전송하기(2) : 코로나 현황 웹 크롤링

전에 학교에서 가볍게 파이썬으로 웹 크롤링하는 무료 강의를 들었던 적이 있다. 당시에는 무슨 말을 하는지도 모른 채 무작정 따라만 했는데, 최근 동아리에서 공부한 HTML에 대한 지식을 바탕으로 Jsoup 모듈을 사용해 웹크롤링을 해보니 전보다는 확실히 이해가 잘 된다. 이번에 크롤링한 사이트는 http://ncov.mohw.go.kr/ 코로나바이러스감염증-19(COVID-19) 코로나바이러스감염증-19 정식 홈페이지로 발생현황, 국내발생현황, 국외발생현황, 시도별발생현황, 대상별 유의사항, 생활 속 거리 두기, 공적마스크 공급현황, 피해지원정책, 홍보자료, FAQ, 관 ncov.mohw.go.kr robots.txt 에는 없으니 따로 크롤링에 제약이 있는 것은 아닌 것 같다. 이번에 가져온 정보는 다음..

에버듀
Blog. 에버듀