일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정렬
- algorithm
- Spring
- 클린코드
- DP
- javascript
- 순환
- Color
- 검색트리
- SWEA
- CleanCode
- 코딩테스트
- 다이나믹 프로그래밍
- android
- CSS
- 해슁
- 구현
- 알고리즘
- html
- DFS
- BFS
- 프로그래머스
- java
- 자바
- front-end
- SQL
- Web
- Kotlin
- inflearn
- codecademy
- Today
- Total
목록분류 전체보기 (183)
깡뇽
함수 : 프로그램의 가장 기본적인 단위 작게 만들어라! 함수를 작게 만들수록 좋다. - 블록과 들여쓰기 : 들여쓰기 수준은 1단이나 2단을 넘기지 않아야 한다. if 문/ else 문 / while 문 등에 들어가는 블록은 한 줄이어야 하고, 거기서 함수를 호출하여 코드를 읽고 이해하기도 쉽도록 작성해야 한다. 한 가지만 해라! "함수는 한 가지를 해야 한다. 그 한 가지를 잘해야 한다. 그 한 가지만을 해야 한다."라는 충고를 잘 기억해야겠다. - 함수 내 섹션 : 한 가지 작업만 하는 함수는 섹션으로 구분하기 어렵다. 함수 당 추상화 수준은 하나로! 함수가 한 가지 일만 하려면 함수 안 모든 문장의 추상화 수준이 동일해야 한다. - 위에서 아래로 코드 읽기 : 내려가기 규칙 위에서 아래로 내려갈수록 ..
다이나믹 프로그래밍 유형의 문제 중에서 선택했다. 1. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음 다음 계단으로 오를 수 있다. 2. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 3. 마지막 도착 계단은 반드시 밟아야 한다. 각 계단에 쓰여 있는 점수의 최대합을 구하자. 2579번 계단 오르기 [시도1] 맞았습니다!! with 솔루션 n = int(input()) score = [0] #계단 점수 저장 dp = [0] #각 층까지의 최대 점수 저장 for i in range(n): score.append(int(input())) if n == 1: dp.append(score[1]) elif ..
문제의 제목처럼 "개" 그림을 출력하면 된다. 엄청 단순한 문제이지만 문자열에서 주의해서 사용해야할 기호들에 대해 다시 정리하고자 이 글을 쓴다. 10172번 개 풀이 [시도3] 맞았습니다!! print("|\_/|") print("|q p| /}") print("( 0 )\"\"\"\\") print('|\"^\"` |') print('||_/=\\\\__|') 주의해야할 점은 큰따옴표(")와 작은따옴표(') 그리고 백슬래시(\)는 입력한대로 출력되지 않을 수 있다. 예를 들어, 문자열 앞, 뒤에는 큰따옴표와 작은따옴표를 사용하는데 큰따옴표를 사용해서 여닫은 문장 안에 큰따옴표를 사용하고 싶다면 오류가 발생할 수 있다. 점프 투 파이썬에도 잘 정리되어 있는 부분이다. - \\ : 문자 백슬래시(\)를 ..
입력받은 수를 3과 5를 사용하여 최소한의 조합으로 만들어야 한다. 만들 수 없을 때에는 -1을 출력한다. 2839번 설탕 배달 풀이 #솔루션 total = int(input()) cnt = 0 while total >= 0: if total % 5 == 0: cnt += total // 5 print(cnt) break total -= 3 cnt += 1 else: print(-1) 5kg 봉지를 많이 사용해야 봉지의 개수를 최소화할 수 있다. 그러므로 전체를 5로 나눠서 나눠지면 5kg 봉지로만 설탕을 배달할 수 있다. 즉, cnt 봉지의 개수는 전체 설탕 무게를 5kg으로 나누어 얻는 몫이 된다. 그러나 5로 나눠지지 않는 경우에는 3kg 봉지를 사용해 볼 수 있음으로 3으로 뺄셈을 해준 뒤에 다시..
클린 코드(Clean Code) 전자책으로 구매하였습니다-! 앞으로 TIL을 작성하며 꾸준히 읽어보려고 합니다🙂 제가 돈을 주고 구매한 첫 전자책인 만큼 열심히 완독 하려고요..! 파이팅💪 TIL 1회차
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 강의를 수강하면서 정리하는 글. 회원 리포지토리 테스트 케이스 자바의 main 메서드나 웹 애플리케이션의 컨트롤러를 사용해서 테스트를 하는 방법은 오래 걸리는 등의 단점이 있다. 자바의 JUnit 프레임워크로 테스트를 실행해볼 수 있다. 회원 리포지토리 메모리 구현체 테스트 1. save 테스트 src폴더 -> test폴더 -> java 폴더 -> hello.hellospring패키지 -> "repository" Package 생성 -> "MemoryMemberRepositoryTest" Class 생성 (public 아니어도 됨) 후 코드 작성 repository에서 findById하는데 Optional이므로 get()..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 강의를 수강하면서 정리하는 글. 비즈니스 요구사항 정리 - 데이터 : 회원 ID, 이름 - 기능 : 회원 등록, 조회 - 아직 데이터 저장소가 선정되지 않은 상황 (가정) - 컨트롤러 : 웹 MVC의 컨트롤러 역할 - 서비스 : 핵심 비즈니스 로직 구현 - 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 - 도메인 : 비즈니스 도메인 객체 ex) 회원, 주문, 쿠폰 등 주로 데이터베이스에 저장하고 관리됨 데이터 저장소가 아직 선정되지 않았으므로 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계해야 한다. 초기 개발 단계에서는 구..
인프런 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술" 강의를 수강하면서 정리하는 글. 방법1) 정적 컨텐츠 파일을 웹 브라우저로 그대로 보내는 것 - 실습 1) resoucres 폴더 -> static 폴더 -> "hello-static.html" File 생성 후 HTML 코드 넣기 2) 브라우저에 localhost:8080/hello-static.html 검색 브라우저에 HTML 코드가 그대로 반환된 것을 확인할 수 있다. 검색을 하면 내장 톰켓 서버가 요청을 받고, hello-static의 요청이 왔다는 것을 스프링에게 알린다. 스프링은 컨트롤러에서 hello-static이 있는지 먼저 찾아보고 없으니 resources에 static/hello-static.html을 ..
Day10 DFS/BFS 문제풀기 - 미로풀기 (난이도 중하) N X M 크기의 직사각형 미로에 갖혀 있는데 (1,1) 위치에서부터 (N,M) 출구까지 이동한다. 괴물이 있는 0, 괴물이 없는 1로 이루어진 미로를 탈출하기 위해 움직여야 하는 최소 칸의 개수를 구하자. 첫째 줄 : N(4≤N)과 M(M≤200) N줄 : M개의 정수(0 또는 1). 공백없이. 시작 칸과 마지막 칸은 항상 1 미로 탈출 풀이 #솔루션 from collections import deque n, m = map(int, input().split()) world = [] for i in range(n): world.append(list(map(int,input()))) direction = [(-1,0), (1, 0), (0, -..
Day9 DF/BFS 문제풀기 - 음료수 얼려 먹기(난이도 중하) N X M 크기의 얼음 틀에 뚫린 부분은 0, 칸막이가 있는 부분은 1로 표시되며 구멍이 뚫린 부분은 상, 하, 좌, 우로 붙어 있다면 연결되어 있다고 간주한다. 만들어지는 총 아이스크림의 개수 구하자. 첫째 줄: N과 M N줄 : 얼음 틀의 형태. 0 또는 1. 음료수 얼려 먹기 풀기 #솔루션 n, m = map(int, input().split()) ice = [] for i in range(n): ice.append(list(map(int, input()))) def dfs(x, y): # 범위 밖 if x = n or y = m: return False # 현재 노드가 아직 방문하지 않은 곳이면 if ice[x][y] == 0: i..
Day8 탐색(Search) : 많은 데이터 중에서 원하는 데이터를 찾는 과정 DFS/BFS는 대표적인 탐색 알고리즘. 스택 & 큐에 대한 이해가 필요. 자료구조(Data Structure) : 데이터를 표현, 관리, 처리하기 위한 구조 - push : 데이터 삽입 - pop : 데이터 삭제 - overflow : 수용 가능한 데이터의 크기를 넘은 상태에서 삽입 연산 수행 시 발생 - underflow : 자료구조에 데이터가 없는데 삭제 연산 수행 시 발생 스택(Stack) : FILO(First In Last Out). 선입후출. LIFO(Last In First Out). 후입선출. => 먼저 쌓은 것은 나중에 뺄 수 있고, 나중에 쌓은 것은 먼저 뺄 수 있음. - append() : 리스트 맨 뒤에..
(앨범에 수록된 곡에 포함되어 있는 저작권이 있는 멜로디의 개수) / (앨범에 수록된 곡의 개수) = 앨범에 포함되어있는 저작권이 있는 멜로디의 평균값 평균값은 반올림을 해서 정수로 표현 입력 : 앨범에 수록된 곡의 개수 & 앨범에 포함되어있는 저작권이 있는 멜로디의 평균값 출력 : 앨범에 수록된 곡에 포함되어 있는 저작권이 있는 멜로디의 개수 2914번 저작권 풀이 [시도1] 맞았습니다!! a, i = map(int, input().split()) b = (a * (i-1)) + 1 print(b)