목록분류 전체보기 (138)
공부하는 스누피
1. 디자인 패턴 : 모듈의 세분화된 역할이나 세부적인 구현 방안을 설계할 때 참조할 수 있는 전형적인 해결 방식. =>기본형 코드들이 포함되어 있음. => 패턴에 변형을 가하면 유사한 형태의 다른 패턴으로 변화됨. => 생성, 구조, 행위 패턴으로 분류할 수 있다. * 아키텍처 패턴과 차이점 아키텍처 패턴은 디자인 패턴보다 상위 수준의 설계에 사용되며, 전체 시스템의 구조를 설계하기 위한 참조 모델이다. 반면 디자인 패턴은 시스템의 컴포넌트들과 관계를 설계하기 위한 참조 모델이고, 몇몇 디자인 패턴은 아키텍처 패턴을 구현하는데 사용된다. 2. 생성 패턴 Creational Pattern : 객체의 생성과 관련된 패턴 => 유연성 향상시킴 - 종류 a. 추상 팩토리 Abstract Factory 인터페이..
https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크� www.acmicpc.net 생각과정 - 벽을 3개 세우는 모든 경우의 수 구하기 => DFS - 벽 다 세우면 바이러스 퍼뜨리기 - 상하좌우로 퍼져나가는데, 감염된 칸에서도 퍼져나가야 한다 - 재귀함수 spread를 사용해서 감염된 칸의 상하좌우로 퍼져나가는데, 벽을 만나면 멈춘다. 이때 감염시킨 칸에서 spread 함수를 새로 호출시킨다. 다 퍼뜨리면 감염 지도를 return한다. - spread 종료 후 안전 영역을 검사한다. 구..
1. 모듈 : 모듈화를 통해 분리된 시스템의 기능. - 단독으로 컴파일이 가능 => 재사용 가능 - 기능적 독립성을 가지고 있음 => 다른 모듈과 과도한 상호작용을 배제함. - 모듈의 독립성은 결합도(Coupling), 응집도(Cohesion)에 의해 측정되며, 결합도는 독립성과 반비례하고 응집도는 독립성과 비례한다. 2. 결합도 Coupling : 모듈 간에 상호 의존하는 정도 (품질과 반비례) - 종류 a. 자료 결합도 Data Coupling 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도. (정수, 문자 ...) => 모듈 간 데이터를 매개 변수나 인수로 넘겨주고, 리턴값을 받는 방식이다. => 장점: 모듈 간의 내용을 알지 않아도 된다 (다른 모듈에 대한 변경 영향이 적음) b. 스탬프..
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, �� www.acmicpc.net 생각과정 - 모든 경우의 수를 탐색해 최대 최소를 구해야 한다 => dfs - 계산할 때마다 연산자 개수를 감소시킨다. - 계산이 끝나면 최대 최소 인스턴스 변수와 비교한다. 구현 package baekjoon; import java.util.Scanner; public class b14504 { public int max = -1000..
https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 생각과정 - for문을 구현할 때, r은 i 인덱스로, c는 j인덱스로 생각한다. - 현재 위치가 (i, j)라면 북쪽은 (i-1, j), 동쪽은 (i, j+1), 남쪽은 (i+1, j), 서쪽은 (i, j-1)이라고 본다. - 청소한 부분은 벽, 빈칸과 구분되어야 하니까 2로 정한다. - 청소하고 왼쪽으로 돌다가 앞에 빈칸있으면 움직인다. 빈칸(0)이 없으면 후진한다. 후진할 때 벽이 있으면 ..
https://programmers.co.kr/learn/courses/30/lessons/17681# 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 생각과정 - 각 지도 배열에서 같은 인덱스의 정수를 이진수 문자열로 변환한다. - 둘 중 하나라도 1이 있다면 #를 추가한다. (OR 연산으로 풀 수 있음) 구현 class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String[] answer = new String[n];..
https://programmers.co.kr/learn/courses/30/lessons/17680 코딩테스트 연습 - [1차] 캐시 3 [Jeju, Pangyo, Seoul, NewYork, LA, Jeju, Pangyo, Seoul, NewYork, LA] 50 3 [Jeju, Pangyo, Seoul, Jeju, Pangyo, Seoul, Jeju, Pangyo, Seoul] 21 2 [Jeju, Pangyo, Seoul, NewYork, LA, SanFrancisco, Seoul, Rome, Paris, Jeju, NewYork, Rome] 60 5 [Jeju, Pangyo, S programmers.co.kr 생각과정 - LRU 알고리즘은 오랫동안 사용하지 않는 것부터 삭제해 메모리 효율을 높..
https://programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 프렌즈4블록. 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙�� programmers.co.kr 생각과정 - 순서 1) 2*2 형태의 같은 블록이 있는지 확인 -> 없으면 종료 2) 1) 조건에 맞는 블록 터뜨리기(지우기) 3) 블록 밑에 빈공간 없도록 떨어뜨리기 -> 1)로 이동 - 2*2 형태가 여러개 겹쳐져도 모두 터뜨려야 함. => 1) 조건에 해당하는 블록에 지울 거라고 표시하기 (다른 블록과도 비교해야 하니까 문자를 바꾸면..