목록전체 글 (91)
DecordRay
Python의 itertools 라이브러리를 이용하면 순열과 조합을 for문 없이 구현할 수 있다!!(유레카!) 순열 - permutation 순열이란 몇 개를 골라 순서를 고려해 나열한 경우의 수를 말한다. 즉, 서로 다른 n 개 중 r 개를 골라 순서를 정해 나열하는 가짓수이며 순열이라는 의미의 영어 ‘Permutation’의 첫 글자 P를 따서 nPr로 표시한다. 출처 : [네이버 지식백과] 순열 [Permutation, 順列] (두산백과) 순열은 순서를 고려하기 때문에 [A, B, C]의 리스트에서 2개의 원소를 골라 순서를 정해 나열하면 [(A, B), (A, C), (B, A), (B, C), (C, A), (C, B)] 가 나오게 된다. 즉 순열에서는 (A, B)와 (B, A)는 다른 것이다..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 제한 사항 : k는 1 이상 5,000 이하인 자연수입니다. dungeons의 세로(행) 길이(즉, 던전의 개수)는 1 이상 8 이하입니다. dungeons의 가로(열) 길이는 2 입니다. dungeons의 각 행은 각 던전의 ["최소 필요 피로도", "소모 피로도"] 입니다. "최소 필요 피로도"는 항상 "소모 피로도"보다 크거나 같습니다. "최소 필요 피로도"와 "소모 피로도"는 1 ..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 : 1. 입력으로 받은 scoville 리스트를 힙(최소힙)으로 변환 2. 무한 루프 실행 종료 조건 2가지 1. 모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우 scoville리스트의 원소가 1개이고, 첫번째 원소가 K보다 작으면 chk=False 저장 후 종료 2. 모든 음식의 스코빌 지수를 K 이상으로 만들 수 있는 경우 n1(첫번째 원소)이 K보다 크거나 같으면 종..
힙(Heap) 완전 이진 트리의 일종으로 우선순위 큐를 구현하기 위해 사용하는 자료구조이다. 여러 개의 값들 중 최댓값이나 최솟값을 빠르게 찾아내도록 만들어진 자료구조이다. 힙은 일종의 반정렬 상태(느슨한 정렬 상태)를 유지한다. 최대 힙(Max heap) 부모 노드의 키 값이 자식 노드의 키 값보다 크거나 같은 완전 이진 트리 key(ParentNode)>=key(ChildNode) 최소 힙(Min heap) 부모 노드의 키 값이 자식 노드의 키 값보다 작거나 같은 완전 이진 트리 key(ParentNode)= heap[child+1]) : child += 1 if (child >= len(heap) or heap[child] > heap[parent]) : break heap[child], heap[..
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 : 1. 사전 초기화 2. 현재 입력부터 한 문자씩 이어붙인 문자열이 사전에 없을때까지 반복문 진행(내부 반복문) 3. 2번에서 temp2에 저장한 사전에 없는 문자열을 사전에 추가 4. temp에 저장된 문자열(현재 입력으로부터 사전에 있는 가장 길이가 긴 문자열)을 answer 리스트에 추가 + 추가적인 설명은 주석 참고 코드 : def solution(msg): answer =..
좋은 코드란? 사람마다 정의하는 좋은 코드의 기준은 조금씩 다르지만 이정도로 말할 수 있을 것 같다. 읽기 쉬운코드 중복이 없는 코드 테스트가 용이한 코드 객체 지향 프로그래밍(Object Oriented Programming) 장점 1. 코드의 재활용성이 높음 2. 절차지향방식보다 코드작성이 간편함 3. 디버깅이 쉬움 단점 1. 절차지향방식보다 처리속도가 느림 2. 설계에 많은 시간이 걸림 특징 1. 캡슐화 - 사용자에게 객체의 기능과 사용법만 제공하고 내부는 감추어 쉽게 사용할 수 있게 하는 기법 데이터 보호 - 사용자가 데이터에 직접 접근하는 것을 차단하여 객체 내 데이터 및 코드의 손상과 오용을 막을 수 있음 추상화 용이 - 추상화를 통해 프로그래밍 문제를 쉽게 개념화 할 수 있음 사용법 용이 -..
1. HTTP 관련 질문 HTTP, HTTPS(TLS(SSL))/HTTP 1.1 2.0 3.0/ HTTP RESTFUL / HTTP 응답코드 외우기 2. 웹브라우저에 google.com 치면 일어나는 과정 3. OS 스레드 , 프로세스 차이(멀티스레드와 멀티프로세스차이, PCB) 4. DB 트랙잭션과 트랙잭션 특성 4가지 5. OS 데드락, 데드락 조건 4가지, 동기화( 뮤텍스, 세마포어, 모니터, 스핀락, 어토믹 설명) 6. 언어관련 지식 JAVA면 JVM, GC/ JAVA 객체지향, 솔리드, 프로그램 실행의 일련과정 객체지향 vs 절차지향, 오버라이딩 오버로딩, 인터페이스, 추상클래스, 가상함수 등 7. TCP vs UDP (TCP, UDP 특성) 8. 세그멘테이션, 페이징 (내부단편화 ,외부단편화)..
문제 : https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 풀이 : 두가지 방법(BFS, DFS)으로 풀이를 진행하였음 첫번째 방법(BFS) 1. 노드 저장할 graph 리스트 초기화 2. 방문 여부 판별 + 몇촌인지 저장할 visited 리스트 초기화 3. graph에 노드 저장 4. bfs 진행 5. 정답 출력 visited[target2]가 0일 경우 촌수 확인 할 수 없는 경우이므로 -1 출력 visited[target..