 [Django] CSV 파일 전송 뷰 만들기
        
        
          [Django] CSV 파일 전송 뷰 만들기
          서론 데이터를 수집하고 수집한 데이터를 활용해야 할 때, 수집된 데이터를 전달하는 방법으로 가장 보편적인 것은 CSV파일이 아닐까 생각합니다. 특히나 AI분야에서는 데이터를 CSV파일 형태로 많이 저장하기 때문에 중요합니다. 그래서 Django 프로젝트에서 CSV파일을 전달하는 방법을 소개합니다. 본론 관련 지식 HttpResponse Django에서 Http요청에 대한 응답을 나타내는 객체입니다. 해당 객체에 대한 자세한 설명은 공식문서에 잘 정리되어 있으니 필요하면 찾아보면 좋을 것 같습니다. 우리가 주목해야 하는 부분은 headers의 Content-Type과 Content-Disposition입니다. Content-Type Content-Type은 Http 요청에 따른 응답으로 전달받는 데이터의 ..
문제 개요 원형으로 연속인 4개의 숫자가 주어졌을 때 시작위치를 변경해서 구할 수 있는 가장 작은 수인 시계수를 구하고 이 시계수가 모든 시계수 중 몇 번째로 작은 수인지 구하는 문제입니다. 문제 접근 가장 작은 시계수를 구하는 방법 가능한 조합의 수는 총 4개 밖에 없으므로 반복문을 통해 주어진 숫자들에서 가장 작은 시계수를 구할 수 있습니다. 몇 번째로 작은 시계수인지 확인하는 방법 처음에는 적절한 수식으로 나타내는 것이 맞다고 생각했는데, 마땅히 생각나지 않아서 해당 숫자가 시계수인지 여부를 확인하는 배열을 만들어서 사용해야 될 것 같습니다. 주어진 수가 시계수인지 확인하려면 다음 조건을 만족하면 됩니다. 4자리 수 x에 대해서 자리를 옮겼을 때 더 작지 않을 것 자리를 옮겼을 때 1000보다 작아..
문제 개요 주어지는 입력값에 대해 상태를 변경한 후 최종 결과물을 출력하는 문제입니다. 문제 접근 스위치 개수가 100개고 학생수가 100명인데 제한시간이 2초 이므로 100명이 모두 100번 바꾼다고 해도 충분히 문제 해결이 가능합니다. 단순 구현으로 생각하고 접근하였습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { static int N; static Boolean[] status; static int students; static int[][] operations; private static..
문제 개요 한칸씩만 이동할 수 있는 좌석과 고정된 좌석이 존재할 때 가능한 모든 조합 수를 구하는 문제입니다. 문제 접근 방법의 가짓수가 최대 20억개이니 브루트 포스로는 해결할 수 없는 문제입니다. 또한 정수에 최대값이 존재하는 언어의 경우에는 이를 고려하여 타입을 설정해야 합니다. (Java의 경우에는 int) 보통 최대값이 매우 큰 문제는 수학적인 내용이 포함되어 있는 경우가 많기 때문에, 수학적으로 접근해보았습니다. VIP에 의해 분리되는 부분들은 각각 가능한 조합을 가질 수 있습니다. 예를 들어 예제로 주어진 123456789에서 4와 7이 VIP라면 다음과 같이 3개의 부분들로 나누어질 수 있습니다. (123) 4 (56) 7 (89) 각 부분들은 독립적이기 때문에 부분들마다 가능한 조합 수들..
서론 Django 프레임워크를 통해 웹 개발을 하다보면 유저관리를 위한 기능을 사용할 때가 있습니다. 이때 AUTH_USER_MODEL과 get_user_model()의 차이를 찾아보았습니다. 본론 AUTH_USER_MODEL AUTH_USER_MODEL은 프로젝트에서 사용하고 있는 유저 모델의 경로 문자열입니다. 그래서 코딩 컨벤션에 따라 대문자로 표기하는 것으로 보입니다. django.conf.settings에서 사용하려는 유저 모델의 경로 문자열로 대체 가능합니다. 사용자화 프로젝트의 settings.py 에 AUTH_USER_MODEL = '나만의 유저 모델'을 추가합니다. # settings.py ... AUTH_USER_MODEL = 'accounts.MyUser'..
 [JUnit4] 알고리즘 테스트 케이스 확인하기
        
        
          [JUnit4] 알고리즘 테스트 케이스 확인하기
          서론 최근 TDD에 관심이 생겨서 JUnit을 공부하고 있던 중 알고리즘 문제 풀이에 이를 적용할 수 있겠다는 생각이 들었습니다. 그래서 처음에는 String[]에 입력값을 넣고 출력값을 무조건 String으로 저장하여 assertEquals로 확인하는 방법을 사용했습니다. 그런데 입력이나 출력값이 많아지면 많아질수록 테스트 코드에 값을 추가하는 과정이 힘들어지기 때문에 문제점을 해결하고자 했습니다. 그래서 일반적으로 문제풀이에서 입력과 출력에 대한 내용이 담겨 있는 .in, .out 파일을 통해 자신의 문제 풀이가 정확한지 테스트하는 방법을 구상하게 되었습니다. 본론 문제풀이 Class 구성 저는 문제를 풀 때 항상 다음과 같은 구조로 클래스를 정의합니다. public class Main{ privat..
 [Mac] Finder에서 터미널 열기
        
        
          [Mac] Finder에서 터미널 열기
          서론 Windows에서는 디렉토리에 대해 우클릭 후 현재 디렉토리를 터미널로 실행하는 기능이 있었는데, 맥에서는 이 점을 찾기 힘들어서 해당 부분을 찾아보았습니다. 본론 기본 설정 시스템 설정에서 터미널 열기를 활성화 해주셔야 합니다. 시스템 설정 → '키보드' 검색 → 키보드 단축키 를 클릭합니다. 서비스 → 파일 및 폴더 → 폴더에서 새로운 터미널 열기, 폴더에서 새로운 터미널 탭 열기 가 비활성화 되어있다면 체크 표시를 눌러 활성화 해 줍니다. 마우스를 통한 터미널 열기 Finder에서 열고 싶은 디렉토리에 우클릭하고 폴더에서 새로운 터미널 열기를 클릭합니다. 단축키를 통한 터미널 열기 기본 설정 두번째 단계에서 폴더에서 새로운 터미널 열기의 단축키 설정 부분을 더블클릭합니다. 기본 Finder 단..
문제 개요 N+2개의 노드를 가지는 가중치 그래프가 있을 때, 처음 번호의 노드부터 마지막 번호의 노드까지 도달 가능한지를 확인해야 합니다. 문제 접근 어떤 노드에서 특정 노드까지 도달할 수 있는지 확인하는 방법은 DFS 혹은 BFS를 이용하면 구할 수 있습니다. 따라서 N+2개의 노드들에 대한 거리를 구하고 이를 가중치로 가지는 그래프를 만들어 DFS를 통해 정답을 구할 수 있었습니다. public class Main { static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); static int t; static int[] n = new int[55]; static int[][][] positions = new i..
