https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2019 카카오 개발자 겨울 인턴십 Level 3 완전탐색 문제다. 처음에는 황당할 정도로 비효율적이고 복잡하게 구현했다. 물론 맞히긴 했지만.. 제재 아이디와 사용자 아이디가 매핑되는 모든 조합을 구하고, hashset을 통해 중복 검사해 set의 사이즈를 return 했다. 제재 아이디와 사용자 아이디를 먼저 조합하는 것보단, dfs를 통해 사용자 아이디를 완전탐색 한 후 선택된 사용자 아이디..
https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2019 카카오 개발자 겨울 인턴십 Level 3 문제다. 문제 설명에 나온 입출력 예시 처럼 무식하게 while문을 통해 징검다리를 1씩 감소시키는 방식으로 풀었었는데, 당연히 시간초과가 났다. 알고리즘을 풀면서 이분탐색을 많이 사용해본적이 없어서 어떤 문제에 이분탐색을 사용해야 하는지 캐치하지 못했던 것 같다. 결국 다른 분의 풀이를 참고했다. 어떤 징검다리를 4명이 건널 수 있다면, 징검다리..
https://school.programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2019 카카오 개발자 겨울 인턴십의 Level 1 문제다. 각 바구니를 뜻하는 스택 배열(doll[])을 만들어 인형을 push했고, 크레인 작동으로 꺼내온 인형을 담는 스택(stack)을 만들었다. 인형을 하나씩 stack에 집어넣을 때마다 스택의 가장 위 인형이 무엇인지 확인(peek)하고, 집어넣으려는 인형과 스택의 가장 위에 있는 인형이 같다면 그 인형 두개가 터트러져야 하므로 cnt를 ..
https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 정점 사이의 거리와 함께 트리가 입력으로 주어졌을 때, 두 정점 사이의 거리가 가장 긴 거리를 구하는 문제이다. 처음엔 DFS로 두 개의 정점을 선택하고, 선택된 두 개의 정점 사이의 거리를 구해 최종 출력할 변수보다 크면 그 거리를 대입하는 형식으로 풀었다. 제대로 값이 구해지긴 하지만 모든 정점의 조합을 구하고 그 값을 구하는 과정이 비효율적이기 때문에 시간 초과가 났다. 정점..
https://www.acmicpc.net/problem/14852 14852번: 타일 채우기 3 첫째 줄에 경우의 수를 1,000,000,007로 나눈 나머지를 출력한다. www.acmicpc.net 대표적인 2차원 dp문제다. 나동빈님 알고리즘 강의(https://www.youtube.com/watch?v=kYoKLm8BZtI)를 보면서 이해했는데 2차원 dp를 사용할 때부터 설명이 많이 생략되어 이해하기 힘들었고, 구글링 해도 자세한 설명이 나오지 않았다. 나중에 까먹었을 때 다시 이해하기 위한 설명을 적어본다. (내 방식대로 적었기 때문에 참고하긴 어려울듯 싶다) 점화식 세우는 과정과 1차원 dp를 사용하는 코드는 따로 설명 x 유튜브 링크 참고. import java.io.BufferedRead..
MySQL에서는 월요일부터 일요일까지 0~7로 나타내므로 case문을 사용해서 한글로 출력하면 된다 SELECT CASE a.a WHEN '0' THEN '월' WHEN '1' THEN '화' WHEN '2' THEN '수' WHEN '3' THEN '목' WHEN '4' THEN '금' WHEN '5' THEN '토' WHEN '6' THEN '일' END AS week, IFNULL( b.cnt, 0 ) AS cnt FROM ( SELECT a.a FROM ( SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 ) AS a )..
- Nexacro : 화면 설계하고 자바스크립트로 코드 작성 - Eclipse eGovFrame: xml 형태의 sql 쿼리문 작성, 버전 관리, 서버 실행 - TortoiseSVN: 버전 관리 도구 - ERwin: 쿼리문 작성을 위한 ERD 참고(논리 설계 물리 설계) - TiberoStudio2: sql 쿼리문 실행, 프로시저나 사용자 정의 함수 참고 - WinMerge: 버전 관리 충돌 해결 - Maven: 빌드 도구 - Apache-tomcat 8.5.66: 웹 서버(개발한 페이지 서버에서 확인 함) - Notepad++: 쿼리문 작성하거나 환경설정 파일 수정 - Everything: 파일 탐색기 기능 - ProcessExplorer: 실행되고 있는 프로세스 관리 이렇게 정리해보니 꽤나 많은 걸 ..
내가 구현하려던 건 안드로이드에서 사용자에 대한 인공지능 모델을 생성하고, 그 결과값을 받아오는 것이었다 (안드로이드->web->파이썬) 당연히 어플을 실행하지 않아도, 백그라운드에서 인공지능 모델을 생성하고 학습시켜야 했기 때문에 백그라운드로 로직을 실행할 수 있는 Service 클래스로 구현했다 그런데 파이썬에서 모델을 학습시키기 위해서는 아주 많은 시간이 필요했고.. 안드로이드에서 파이썬의 응답을 기다리는 동안 ui가 멈춰 아무것도 하지 못했고, 응답시간이 넘으면 아예 ANR(Application Not Responding) 오류가 발생했다.. 구글링하다가 서비스는 응답시간이 10초가 넘으면 ANR오류가 발생한다는 걸 봤고, 백그라운드에서 ui의 제한없이 실행할 수 있는 클래스들을 찾아봤다 그리고 ..