목록전체 글 (166)
pogun 공부 저장소
문제 풀이class Solution { public int solution(int[][] signals) { int limit = 1; // 검사할 최대 범위(limit) 구하기 for(int[] signal : signals) { int cycle = signal[0] + signal[1] + signal[2]; limit = MinCycle(limit, cycle); } // 0초부터 limit초까지 하나씩 검사 for(int i = 0; i 문제 해석- 모든 신호등은 항상 초록 → 노랑 → 빨강 순- 각 신호의 지속 시간은 신호등마다 다름- 시간은 1초..
해석 예제 코드 1import java.util.*;public class OrderSummary { public static void main(String[] args) { List> orders = new ArrayList(); Map order1 = new HashMap(); order1.put("userId", "user1"); order1.put("price", 12000); order1.put("status", "PAID"); orders.add(order1); Map order2 = new HashMap(); order2.put("userId", "user2"); order2..
[OOP] 추상화 정의"복잡한 걸 숨기는 게 아니라, 핵심만 남겨서 덜 헷갈리게 만드는 기술""추상화 = 그냥 숨기는 거 아냐?": 아니다. 추상화의 진짜 목적은 "숨김" 자체가 아니다.복잡한 현실에서 '중요한 것만 뽑아' 공통 규칙(인터페이스)을 만들고,나머지 변화 가능한 부분은 뒤로 밀어두는 것이다.한 문장 정의추상화는 "무엇을 해야 하는지(기능 / 역할)"만 드러내고,"어떻게 하는지(구현 / 세부사항)"는 감춰서 복잡도를 낮추는 설계 원칙이다. 즉, 추상화는 "기능의 계약(Contract)"을 만드는 일에 가깝습니다.1. 추상화가 필요한 이유서비스가 커지면 코드에서 가장 힘든 부분은 이거다 : - 케이스가 늘어남 - 예외가 늘어남 - 구현이 복잡해짐 - 그런데 외부에서 그 복잡..
: "디자인 패턴"은 코딩 스킬이라기 보다,: 여러 사람이 함께 개발할 때 코드를 덜 망가뜨리는 공통 언어에 가깝다.: 그리고 디자인 패턴을 이해하려면 OOP(객체지향)가 왜 필요한지부터 감이 와야한다고 생각한다.→ 이번 글은 깊게 들어가지 않고, 전체적인 지도 느낌만 깔끔하게 정리하는 글 입니다.1. OOP(객체지향)란?OOP(Object-Oriented Programming)는 "현실의 개념(사람 / 주문 / 상품 같은 것)을 객체로 모델링해서,역할과 책임을 나눠 프로그램을 유지보수하기 쉽게 만드는 방식" 이다. 핵심 파악하기 :- 코드가 커질수록 "한 파일에 다 때려 넣는 방식"은 무너짐- 그래서 책임을 나누고, 변경 영향 범위를 줄이는 구조가 필요함- 그 방법 중 대표가 OOP2. 왜 OOP를 쓰..
1. 자바 샘플 코드/*** 유저 구분 서비스* * - 사용자 역할과 점수를 기반으로 구분 결과를 반환* ** @param role(사용자 역할), score(사용자 점수)* @return 사용자 구분 결과 메시지*/class UserService { public String checkUser(String role, int score) { if (role == null || role.isBlank()) { return "역할이 없습니다."; } if (score = 80) { return "일반 사용자 통과"; } return "일반 사용자 대기"; ..
테이블 구조 id : 대장균 개체 idparent_id : 부모 개체의 idsize_of_colony : 개체의 크기differentiattion_date : 분화되어 나온 날짜genotype : 개체의 형질문제 풀이SELECT count(*) as COUNTFROM ECOLI_DATAWHERE (GENOTYPE & 2) = 0 AND ((GENOTYPE & 1) > 0 OR (GENOTYPE & 3) > 0);: 2번 형질을 보유하지 않으면서 1번이나 3번 형질을 보유하고 있는 대장균 개체의 COUNT 쿼리: 1번과 3번 형질을 모두 보유하고 있는 경우와 1번이나 3번 형질을 보유하고 있는 경우 포함 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 ..
흐름 요약브라우저가 뜬다는 건"주소를 해석하고 → 길을 찾고 → 서버와 연결하고 → 데이터를 받아 → 화면으로 그리는 과정"이다. 즉,URL 입력 → DNS로 IP 찾기 → 서버까지 네트워크 연결 → HTTP/HTTPS 요청 → 서버 응답 → HTML/CSS/JS 다운로드 → 브라우저가 화면으로 그리기1. 사용자가 주소창에 URL을 입력한다.https://www.google.com브라우저는 이걸 이렇게 나눠서 해석한다 : - https → 통신 규칙(HTTPS) - www.google.com → 도메인 이름 - / → 요청 경로(기본 페이지) 아직 이 시점에서는 : - 서버에 접속 X, 인터넷 통신 X → 그냥 문자열을 분석하는 단계2. "google.com이 어디야?" → D..
게이트웨이 정의"인터넷으로 나갈 때 반드시 거쳐야 하는 '출구'""내 PC에는 IP도 있고, DNS도 있는데 왜 설정에 꼭 게이트웨이가 있을까?""게이트웨이가 없으면 인터넷은 왜 안 될까?"→ 여기서 등장하는 핵심이 바로 게이트웨이(Default Gateway) 이다. : 게이트웨이는 "내 네트워크를 벗어나는 모든 트래픽이 처음으로 향하는 출구"다.조금 더 쉽게 말하면,"이 IP가 우리 집(같은 네트워크)이 아니면,전부 저쪽(공유기)으로 보내라"는 기준점이다.1. 게이트웨이가 없으면 어떤 일이 생길까?: 내 PC 설정을 보면 보통 이런 값들이 있다. - IP 주소: 192.168.0.10 - 서브넷 마스크: 255.255.255.0 - 기본 게이트웨이: 192.168.0.1 - ..
DNS 정의: "google.com을 치면 왜 접속이 되는가?": NAT(주소 번역), DHCP(주소 배정), 포트포워딩(길 안내)까지 이해했다면 아래 궁금증이 생긴다. "근데 우리는 IP(숫자)를 모르는데도 왜 google.com, naver.com 같은 이름만 치면 접속이 되지?"→ 여기서 등장하는 핵심이 DNS(Domain Name System)이다. 즉,DNS는 사람이 읽기 쉬운 도메인 이름(예: google.com)을 컴퓨터가 통신할 수 있는IP 주소(예: 142.250.x.x)로 바꿔주는 '인터넷 전화번호부' 시스템이다.1. DNS가 없으면 인터넷은 어떻게 보일까?: DNS가 없으면, 우리는 사이트에 들어갈 때마다 이렇게 해야 한다. - “구글 접속하려면 142.250.xxx.xxx” ..
포트포워딩의 정의"집에서 서버 열기"가 왜 어렵고, 포트포워딩이 왜 필요한가?"그럼 집 컴퓨터로 서버(웹서버, 게임서버, 개발서버)를 열면친구가 내 집 IP로 접속하면 되는 거 아닌가?""근데 왜 '포트포워딩 해야함' 이란 생각을 할 수 있다"→ 여기서 등장하는 핵심이 포트포워딩(Port forwarding) 이다.포트포워딩은 "공유기(공인IP)로 들어온 특정 포트의 요청"을 "집 안의 특정 기기(사설 IP)의 특정 포트"로 전달해 주는규칙 설정이다. - NAT 환경에서는 "밖에서 집 안으로 들어오는 길"이 기본적으로 막혀있다.- 포트포워딩은 그 막힌 문에 "이 문(포트)로 들어오면, 저 방(내부 기기)으로 안내해" 라고 표지판을 붙이는 작업1. 포트포워딩이 왜 필요한가?: 집 인터넷 구조는 보통 이렇게..