본문 바로가기

분류 전체보기

(92)
[TDD 공부-java] 1) intellij에서 JUnit 설정 및 간단한 테스트 코드 작성 🔴 TDD 란? 구현이 먼저가 아니라 테스트가 먼저다! 테스트는 올바르게 동작하는지를 검증하는 테스트 코드를 작성한다는 것을 의미한다. 기능을 검증하는 테스트 코드를 먼저 작성하고 테스트를 통과시키기 위해 개발을 진행한다. 요구 기능에 대한 테스트 코드 작성 테스트 케이스를 통과하기 위한 최소한의 코드 생성 리펙토링 🟠 intellij에서 JUnit 설정 프로젝트를 생성한 후 [File] -> [Project Structure]를 선택해 Project Structure 창을 연다 [Modules] -> [Dependencies] 탭을 선택한다. 아래 [+]버튼 -> [Library..] -> [From Maven] 선택 창이 뜨면 org.junit.jupiter:junit-jupiter 검색 후 맞는 버..
[TDD 공부-java] 0) 어떻게 무엇을 공부할지 서버 개발을 하면서 에러가 날 때마다 테스트 코드의 필요성을 느꼈다. node.js기반으로 서버를 개발했기 때문에 모카로 테스트 코드를 작성했었는데, spring공부를 시작하면서 java로 TDD 공부를 제대로 다시해보려 한다. 목표는 6월부터 진행하는 소마 프로젝트에서 TDD제대로 적용하기! 이다. java문법도 많이 까먹었는데 java도 리마인드할 겸 공부하면 좋을 거 같다! 공부할 때 활용할 것들 book.naver.com/bookdb/book_detail.nhn?bid=16267566 테스트 주도 개발(Test Driven Development) 시작하기 작동하는 깔끔한 코드를 만드는 데 필요한 습관- JUNIT 5를 이용한 테스트 주도 개발 안내- 테스트 작성과 설계를 위한 대역- 테스트 가능한..
[Python] 프로그래머스 level3 광고 삽입 programmers.co.kr/learn/courses/30/lessons/72414 풀이 과정 처음에는 후보가 될 수 있는 시작지점을 구해서 각 log와 비교해줬더니 O(N^2)로 시간초과가 났다. 모든 시점에 각각 시청하는 사람이 몇명인지 배열에 저장하면, O(전체시간)으로 비교 가능하다. 각 시간마다 사람 수를 저장하는 방법이 O(전체시간 * 전체사람)으로 밖에 안떠올랐는데, dp memorize를 사용하면 O(전체시간)으로 저장할 수 있다. "HH:MM:SS"문자열을 초로 변환해주는 함수와 초를 "HH:MM:SS"형태로 변환해주는 함수를 만든다. 위 그럼처럼 각 시점에 맞는 사람수를 구하기 위해 dp[i]를 갱신해주고, 구간합 계산을 위해 dp[i]를 한 번 더 갱신해 준다. # 광고 삽입 de..
[IntelliJ] Intellij Ultimate 학생 인증, 무료 설치 방법 (인증 이메일 안올 때) intellij ultimate는 아래 링크로 들어가서 학생 이메일 인증을 하면 무료로 사용할 수 있습니다! Free Educational Licenses - Community Support Learn or teach how to code with best-of-industry tools from JetBrains. Free Educational Licenses for JetBrains' tools. www.jetbrains.com 보통 링크로 들어가서 학생이메일 입력하고 메일 오면 하라는대로 따라하면 인증이 될텐데 저희 학교 도메인은 설정이 안되어 있는지 메일이 안오더라구요.. 이렇게 외국 사이트에서 학생 인증 이메일을 요청했을 때 안오는 이유는 2가지가 있습니다. 학교에서 해당 이메일 도메인을 차단했..
[Python] 백준 16234 : 인구 이동 www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 풀이 과정 각 지점에서 출발해서, 인접하고 현재 지점과의 차이가 l이상 r이하인 곳들을 bfs/dfs를 통해서 다 방문한다. 방문이 가능하다는 것은 하나의 연합이 된다는 것을 의미한다. visted는 전체 출발에 대해서 하나만 정의해서 쓰면 된다. 전체 코드 move = [(0,1), (1,0), (-1,0), (0,-1)] def dfs(i, j): now = [] total = 0 cnt = ..
[Python] 프로그래머스 level3 합승 택시 요금 programmers.co.kr/learn/courses/30/lessons/72413 코딩테스트 연습 - 합승 택시 요금 6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4 programmers.co.kr 🍟 풀이 방법 다익스트라를 이용해 최단 경로를 찾는다. 다익스트라에 대한 설명은 아래 포스팅을 참..
최단 경로 찾기 알고리즘 (다익스트라, 벨만포드, 플로이드 워셜), 관련 백준 문제 파이썬 풀이 3가지 최단 경로 찾기 알고리즘과 각각이 어떤 문제에서 사용되는지에 대한 포스팅입니다 . 1️⃣ 다익스트라(dijkstra) : 대부분의 최단 경로 문제 다익스트라는 최단 경로 찾기 알고리즘 중 가장 빠르기 때문에 대부분의 문제에서 사용합니다. (다익스트라의 시간복잡도는 O(N+ElogE)입니다. 💛 다익스트라 전체 코드 (백준 1753) import heapq V, E = map(int, input().split()) K = int(input()) adjList = [[] for _ in range(V+1)] for i in range(E): u, v, w = map(int, input().split()) adjList[u].append((v,w)) hq = [] visited = [0]*(V+1) h..
[Python] 프로그래머스 level3 자물쇠와 열쇠 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 풀이 방법 회전하는 경우는 4가지 이다. 시계 방향으로 4번 하면 그 다음은 반복이다. 회전은 rotation이라는 함수로 구현한다. key를 2차원 배열로 두는 것 보다, 1인 인덱스 쌍 [i, j]를 배열로 저장해두는게 더 편하기 때문에, rotation함수에서 key[i][j] = 1인 인덱스 쌍의 배열을 리턴하게 만든다. key의 i번째 돌기를 비어있는 lock의 첫 번째 칸에 맞출 때, 더해야하는 값 cx와 cy를 구한다. key의 각각에 더해주고, 그 값이 lock의 홈을 맞게 채우는지 + lock의..