일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 서블릿
- 완도산회
- 2638
- 고모네 콩탕
- 투어
- dp
- 백준
- 2020 KAKAO BLIND
- Servlet
- 양꼬치
- 문자열 압축
- HTTP API
- 맛집
- 스프링 MVC
- mvc
- 2839
- 포두부 보쌈
- 호유동
- 설탕 배달
- 쓰레드 풀
- 2589
- BFS
- 스프링
- 알고리즘
- 다이나믹 프로그래밍
- 1로 만들기
- Spring
- 동적 프로그래밍
- 맛집 투어
- Today
- Total
목록분류 전체보기 (157)
프로그래밍 공방
Strategy Pattern : 전략 패턴 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴 알고리즘군(분리할 행동 양식) 을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만드는 패턴이다. 전략 패턴을 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 전략 패턴의 원칙 1. 클래스에서 달라지는 부분을 찾아내고 달라지지 않는 부분으로부터 분리시킨다. 바뀌는 부분은 따로 뽑아서 캡슐화한다. 그렇게 하면 나중에 바뀌지 않는 부분에는 영향을 미치지 않은채로 그 부분만 고치거나 확장할 수 있다. 달라지는 부분을 클래스에서 분리해서 각 부분을 나타낼 클래스 집합을 새로 만든다. 클래스 집합을 디자인 하는 법 - 최대한 유연하게 - 기존 클래스의 인스턴..
문제 programmers.co.kr/learn/courses/30/lessons/17687 코딩테스트 연습 - [3차] n진수 게임 N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0 programmers.co.kr 문제해결방법 숫자를 순서대로 n진수로 만들어서 하나의 문자열로 만들어준다. 문자열의 길이가 t x m 길이 이상이 되면 튜브가 말해야 할 숫자들을 출력해준다. 코드 1234567891011121314151617181920212223242526272829303132package Programmers; public class Solution_n진수게임 { p..
문제 www.acmicpc.net/problem/1561 1561번: 놀이 공원 첫째 줄에 N(1 ≤ N ≤ 2,000,000,000)과 M(1 ≤ M ≤ 10,000)이 빈칸을 사이에 두고 주어진다. 둘째 줄에는 각 놀이기구의 운행 시간을 나타내는 M개의 자연수가 순서대로 주어진다. 운행 시간은 1 이상 30 www.acmicpc.net 문제해결방법 놀이기구를 타는 시간을 기준으로 0초와 놀이기구를 탈 수 있는 마지막 시간을 양 끝으로 하고, 해당 시간대에 탈 수 있는 인원의 수를 구하고 그 인원이 N을 넘는지를 기준으러 그 사이의 시간을 이진탐색 한다. 위 탐색으로 N을 넘는 가장 작은 시간을 구하고 그 시간대에 탈 수 있는 총 인원의 수와 N의 차이를 구한다. 그 차이만큼 탈 수 있는 놀이기구를 뒤..
문제 programmers.co.kr/learn/courses/30/lessons/17686 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히 통과해 카카오에 입사한 무지는 파일 저장소 서버 관리를 맡게 되었다. 저장소 서버에는 프로그램 programmers.co.kr 문제해결방법 각 파일명을 입력받아 HEAD, NUMBER와 들어온 순서를 기록하고 각 파일의 해당 값들을 비교하며 정렬해준다. 코드 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758package Programmers; ..
문제 programmers.co.kr/learn/courses/30/lessons/17683 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 문제해결방법 처음에 주어진 멜로디 문자열 m과 musicinfos의 원소들에서 C#, D#, F#, G#, A# 를 겹치지 않는 다른 알파벳으로 바꿔준다. 각 음악의 시간을 계산해서 그 길이가 되도록 음악을 자르거나 반복해준다. 멜로디가 존재하는 음악들끼리 길이를 비교하여 가장 긴 음악의 제목을 반환해주고 같을 경우 먼저 나온 음악의 제목을 반환해준다. 코드..
문제 programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 문제해결방법 스테이지의 개수만큼 배열을 선언해주고 각 스테이지마다 도전중인 사용자의 수를 저장해준다. 스테이지를 앞부터 돌며 (현재 스테이지에 도전중인 사용자의 수 / 스테이지까지 도달한 인원의 수) 로 실패율을 구해준다. 다음 스테이지로 넘어갈 때 남은 사용자의 수를 구하기 위해 도전중인 사용자의 수를 빼면서 계산해준다. 전체 스테이지에 대해 실패율을 구하고 조건에 맞..
문제 programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 문제해결방법 다트를 던진 순서대로 옵션을 반영해서 점수를 계산해주었다. 코드 12345678910111213141516171819202122232425262728293031323334353637383940package Programmers; public class Solution_다트게임 { public static int pow(int score, char type) { if(type=='D') score*=score; else if(type=='T') score*=score*score; return score; } public static..
문제 programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제해결방법 이 문제는 course 길이별로 order 문자들을 조합해서 각 길이별로 제일 많이 나온 조합을 찾는 문제였다. 코드 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727..
트랜스포트 계층 : Transport Layer 서로 다른 호스트에서 동작하는 애플리케이션 프로게스들 간의 논리적 통신을 제공 (논리적 통신은 애플리케이션 관점에서 보면 프로세스들이 동작하는 호스트들이 직접 연결된 것처럼 보이게 한다) * 네트워크 계층 프로토콜은 호스트들 사이의 논리적 통신을 제공 세그먼트 트랜스포트 계층에서 네트워크 패킷을 지칭하는 용어 (애플리케이션 메시지를 작은 조각으로 분할하고, 각각의 조각에 트랜스포트 계층 헤더를 추가해서 생성) 다중화 / 역다중화 역다중화 트랜스포트 계층 세그먼트의 데이터를 올바른 소켓으로 전달하는 작업 (소켓은 유일한 식별자를 가진다 / 세그먼트는 세그먼트가 전달될 소켓을 가리키는 특별한 필드를 가진다) * 특별한 필드 : 출발지 포트 번호 필드, 목적지 ..
플로이드 와샬 : Floyd Warshall 가중치가 있는 그래프에서 모든 정점의 쌍에 대해 최단 경로를 찾는 알고리즘 * 플로이드 와샬 알고리즘은 다이나믹 프로그래밍의 한 예로 핵심 아이디어는 아래와 같다. 어떤 두 정점 사이의 최단 경로는 어떤 경유지를 거치거나 거치지 않는 경로 중 하나 예시 위와 같은 그래프가 있을 때, 각 정점에서 정점으로의 최단 경로를 나타내는 배열은 우측과 같다. 자기 자신은 0이고 간선이 존재하지 않는다면 INF를 넣어준다. 모든 경로에 대해 경유지 K를 거쳐갔을 때와 비교해가며 최단 경로를 계산해준다. -> A-B와 A-K + K-B를 비교한다. * 특징 - 모든 가능한 경유지에 대해 모든 정점에서 다른 모든 정점으로 가는 최단 거리를 확인하므로 O(n^3)가 걸린다. -..