본문 바로가기

전체 글186

[java] 객체 지향 프로그래밍 [1. 객체지향 프로그램] 객체 지향 프로그래밍(Object-Oriented Programming, OOP)이란? - 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것 - 각각의 객체는 메시지를 주고 받고 데이터를 처리할 수 있음 객체 지향 프로그래밍의 장점 - 코드의 재사용성이 높아짐 - 프로그램을 유연하고 변경이 용이하게 해줌 - 소프트웨어 개발과 보수를 용이하게 함 - 보다 직관적인 코드 분석을 가능하게 함 - 코드의 중복을 제거함 [2. 객체지향 언어의 특징] 캡슐화 (Encapsulation) - 모든 변수들과 메소드들을 클래스 단위로 모으는 것 - 객체 안에 데이터와 메소드를 숨기는 것 - 객체 속성과 메소드를 외부에.. 2023. 6. 4.
[데이터베이스] 6. 식별자 [1. 식별자 기본] 1. 식별자 : 여러 개의 속성으로 구성된 엔터티 내에서 엔터티를 대표할 수 있는 하나의 속성 - 키 ≠ 식별자 - 업무적으로 구분하는데 사용되는 것으로 논리 데이터 모델링 단계에서 사용 (키는 데이터베이스 테이블에 접근할 때 사용) 2. 식별자의 분류 (1) 대표성 여부 - 주식별자 : 속성들을 구분할 수 있으며 대표성 있음, 타 엔터티와 참조관계 연결 가능 - 보조식별자 : 속성들을 구분할 수 있으나 대표성은 없어 참조관계 연결 불가능 (2) 스스로 생성 여부 - 내부 식별자 : 엔터티 내에서 스스로 생성된 식별자 - 외부 식별자 : 타 엔터티와의 관계를 통해, 타 엔터티로부터 받아오는 식별자 (3) 속성의 수 - 단일 식별자 : 하나의 속성으로 구성된 식별자 - 복합 식별자 :.. 2023. 4. 28.
[java] 프로그래머스스쿨 연습문제 Lv.2 정렬 문제 모음 1. 최댓값과 최솟값 코딩테스트 연습 - 최댓값과 최솟값 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 1. 숫자로 저장하기 위해 ArrayList numbers 선언해준다. 2. String 배열 temp에 s를 " "기준으로 자른 문자들을 넣어준다. 3. for문을 사용해서 temp의 원소를 정수형으로 변환하여 numbers에 넣어준다. 4. numbers를 오름차순으로 정렬해준다. 5. answer에 numbers의 최솟값과 최댓값을 더해준다. 회고 - ArrayList 오름차순 정렬 : Collections.sort(list); - ArrayList 내림차순 정렬 : Collections.sort(list, Collections.reverseOrder); - 레벨 2로 올라오면서 .. 2023. 4. 28.
[java] 프로그래머스스쿨 연습문제 Lv.2 DFS 문제 모음 1. 무인도 여행 코딩테스트 연습 - 무인도 여행 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 1. 깊이 우선 탐색(DFS) 아이디어를 활용한다. 2. 전역변수로 배열 dx, 배열 dy, 2차원 배열 map, 2차원 배열 visited, 정수형 변수 row, col, cnt=0을 선언한다. 3. maps의 원소들을 한글자씩 정수로 바꿔 map에 복사한다. 3-1. 만약 X라면 -1을 저장한다. 4. answer을 리스트로 선언한다. 5. dfs라는 함수를 생성한다. 5-1. 현재 위치에서 이동할 수 있는 인접한 위치로 이동해가며 cnt에 값을 더한다. 5-2. 이동할 수 있는 곳이 더이상 없다면 cnt를 반환한다. 6. 반복문을 통해 map[행][열]의 값이 -1이 아니고 방문한 적이 .. 2023. 4. 28.
[java] 프로그래머스스쿨 연습문제 Lv.2 DP 문제 모음 2. 숫자 변환하기 코딩테스트 연습 - 숫자 변환하기 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 1. 동적 계획법(Dynamic Programming) 아이디어를 활용한다. 2. 정수형 배열 dp를 크기 y+1로 선언한 후, 가능한 가장 큰 값(Integer.MAX_VALUE)으로 채운다. 3-1. 각 인덱스를 '만들 수 있는 값'으로 생각한다. 3-2. 각 인덱스 값을 만들기 위해 필요한 연산 횟수를 저장한다 3-3. 그러니까 """dp[ i ] 의 값은 곧 x가 i로 변환되기 위한 연산 횟수""" 인 것임 3-4. 이 과정은 memoization을 위한 것 4. 배열에 만들 수 있는 값을 인덱스로 삼아 최소 연산 횟수를 저장한다 4-1. for문으로 x부터 시작해 y까지 4-2. .. 2023. 4. 28.
[java] 프로그래머스스쿨 연습문제 Lv.2 Greedy 문제 모음 1. 호텔 대실 코딩테스트 연습 - 호텔 대실 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 1. 체크인 시간과 체크아웃 시간을 저장하기 위해 2차원 배열 schedule을 선언한다. 1-1. split과 parseInt를 사용해 순서대로 저장한다. 1-2. 시간*60+분 1-3. 체크아웃 시간을 저장할 때에는 청소시간 10분을 추가로 더한다. 2. schedule을 체크인 시간순으로 정렬하고, 체크인 시간이 같다면 체크아웃 시간으로 정렬한다. 3. 우선순위 큐를 선언하여 schedule의 checkout 시간을 정렬된 순서대로 삽입한다. 4. 만약 우선순위 큐의 첫 번째 원소가 다음 입실 시간보다 작거나 같다면 poll, 퇴실시간을 큐에 추가 5. 그렇지 않다면 큐에 퇴실시간을 add .. 2023. 4. 28.
[MySQL] 프로그래머스스쿨 연습문제 Lv.3 모음1 1. 자동차 대여 기록에서 대여중/대여 가능 여부 구분하기 코딩테스트 연습 - 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 1. 같은 자동차의 대여-반납 기록이 여러개일 경우, START_DATE와 END_DATE를 기준으로 더 늦은 날짜인 기록을 기준으로 하기 위해 MAX를 사용한다. 1-1. 2022-10-16일을 넘는 대여기록이 없다면 대여 가능이 됨 2. CAR_ID를 기준으로 묶어준다. 회고 - MAX를 이렇게 쓸수도 있군요,, 배워갑니다 - IF문 : IF (조건, 조건 충족시 결과, 조건 미충족시 결과) 코드 (접은 글) 더보기 SELECT CAR_ID, MAX(CASE WHEN '2022-10-16' BETWEEN .. 2023. 4. 27.
[MySQL] 프로그래머스스쿨 연습문제 Lv.2 모음2 1. 진료과별 총 예약 횟수 출력하기 코딩테스트 연습 - 진료과별 총 예약 횟수 출력하기 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 회고 - 놀라운 사실,,, SELECT문에서 AS 생략 가능이엇음 ㄷ ㄷ - ORDER BY 쓸 때 그냥 열 순서로 대체해도 됨 (=ORDER BY 2, 1) - TIMESTAMP여도 DATE_FORMAT사용하면 됨 - 날짜든 시간이든 수치든 BETWEEN-AND로 범위 설정 가능 코드 (접은 글) 더보기 SELECT MCDP_CD AS '진료과 코드', COUNT(MCDP_CD) '5월예약건수' FROM APPOINTMENT WHERE DATE_FORMAT(APNT_YMD, '%Y-%m-%d') BETWEEN '2022-05-01' AND '2022-0.. 2023. 4. 27.
[MySQL] 프로그래머스스쿨 연습문제 Lv.2 모음1 1. 조건에 부합하는 중고거래 상태 조회하기 코딩테스트 연습 - 조건에 부합하는 중고거래 상태 조회하기 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 1. 출력할 게시글 ID, 작성자 ID, 게시글 제목, 가격은 SELECT로 호출한다. 2. 거래 상태는 CASE-END를 사용해 각각 한글로 바꿔준다. 3. 조건에 맞는 날짜를 선택할 때에는 CREATED_DATE가 DATE타입이므로, DATE_FORMAT을 사용한다. 4. 내림차순 정렬은 ORDER BY ~~~ DESC 회고 - DATE_FORMAT에서 맨 앞(연)은 대문자!! 코드 (접은 글) 더보기 SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, (CASE WHEN STATUS = 'SALE' THEN '판.. 2023. 4. 27.
[java] 프로그래머스스쿨 연습문제 Lv.1 문제 모음 2 1. 개인정보 수집기간 코딩테스트 연습 - 개인정보 수집 유효기간 | 프로그래머스 스쿨 (programmers.co.kr) 풀이 1. HashMap에 약관별 기간(terms의 정보)을 저장한다 1-1. key = 약관, value = 기간 2. 날짜를 비교할 때 연, 월, 일을 따로 비교하기가 복잡하므로, 총 일수로 바꿔준다(1년=365일처럼) 2-1. 연*12*28 2-2. 월*28 2-3. 따라서, today = 연*12*28 + 월*28 +일 3. 반복문을 통해 privacies의 원소를 하나씩 읽어가며 2번에서 today를 총 일수로 바꿔준것과 동일하게 바꾼다. 4. 바꾼 총 일수에서 1을 빼준 값과 today의 총 일수를 비교하여, today의 총 일수가 더 크면 answer에 삽입 회고 - S.. 2023. 4. 24.
sdf [cloud native] https://www.redhat.com/ko/topics/cloud-native-apps 클라우드 네이티브 애플리케이션의 이해클라우드 네이티브 개발의 목표는 비즈니스 요구 사항의 변화에 맞춰 정기적으로 업데이트할 수 있는 효율적인 애플리케이션을 출시하는 것입니다.www.redhat.com [Linux] https://www.redhat.com/ko/topics/containers#linux-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88 [Kubernetes] https://www.redhat.com/ko/topics/containers/what-is-kubernetes [DevOps] https://www.redhat.com/ko/topics/devops .. 2023. 4. 19.
[java] 프로그래머스스쿨 연습문제 Lv.1 문제 모음 1 1. 달리기 경주 https://school.programmers.co.kr/learn/courses/30/lessons/178871 풀이 1. 해쉬맵 두 개를 선언한 후 하나는 key값을 이름 value값을 등수로, 다른 하나는 key값을 등수 value값을 이름으로 설정한다. 1-1. map1 : 이름을 통해 등수를 도출할 때 사용 1-2. map2 : 등수를 통해 이름을 도출할 때 사용 2. for문을 통해 각 해쉬맵에 players 배열을 사용해 값을 입력한다. 3. callings 배열을 for문으로 읽어가며 해쉬맵의 값을 바꾼다. 3-1. name이라는 String변수에 바로 앞에 있는 사람의 이름을 저장한다. 3-2. rank라는 int변수에 바로 앞에 있는 사람의 등수를 저장한다. 3-3... 2023. 4. 13.
[Java] 2차원 리스트 List 목차 선언 데이터 입력 데이터 및 크기 조회 [1. List의 선언] 1. 빈 리스트 선언 List list = new ArrayList(); List list = new ArrayList; 2. 물리적 크기를 정한 리스트 선언 List list = new ArrayList(10); [2. List 데이터 삽입] 1. 리스트 선언과 동시에 데이터 입력 List list = Arrays.asList( Arrays.asList(1,2,3), Arrays.asList(4,5,6), Arrays.asList(7,8,9) ); 2. 1차원 리스트 선언 후 삽입 List list = new ArrayList(); List list0 = new ArrayList(Arrays.asList(1,2,3)); List li.. 2023. 4. 6.
[Java] 1차원 리스트 List 목차 리스트란 선언 데이터 입력 데이터 삭제 데이터 및 인덱스 조회, 크기 확인 정렬 (오름차순, 내림차순) 리스트 출력 [1. List란] - 리스트는 중복을 허용하면서 저장순서를 유지하는 컬렉션(Collection)을 구현하는데 사용된다. - ArrayList : List 인터페이스를 구현하는 컬랙션 클래스 - 인덱스는 0부터 시작 [2. List의 선언] 1. 빈 리스트 선언 List list1 = new ArrayList(); List list2 = new ArrayList(); List list3 = Collections.EMPTY_LIST; 2. 물리적 크기가 정해진 빈 리스트 선언 List list = new ArrayList(10); 3. 선언과 동시에 데이터 입력 List list = n.. 2023. 4. 6.
[Java] class 클래스 [1. Class] 1. class의 정의 : 객체를 정의하기 위한 설계도 또는 틀 - 틀이 한 번 설정되면 여러개의 객체에 대한 속성과 기능을 쉽게 정의할 수 있음 2. 클래스의 장점 - 코드의 재사용성이 높음 - 코드의 관리가 용이 3. 클래스의 기능 (1) 속성 정의 : 클래스(Ex.학생명단 )별로 생성되는 인스턴스(Ex.학생)의 속성을 쉽게 정의할 수 있다. Class Student student1 student2 student3 String name; String major; int studentNum; char grade; boolean attendence; Student s1 = new Student(); s1.name = 상희; s1.major = 경제금융학부; s1.studentNum =.. 2023. 4. 3.
스터디 7주차 CS https://sangddongvoid.tistory.com/81 코테 https://sangddongvoid.tistory.com/82 https://sangddongvoid.tistory.com/83 회고 2023. 3. 26.
[C/C++] 나동빈 미로 탈출, BFS 보호되어 있는 글 입니다. 2023. 3. 26.
[C/C++] 나동빈 음료수 얼려먹기, DFS 보호되어 있는 글 입니다. 2023. 3. 26.
[네트워크] 4. IP주소 [1. ARP] 1. ARP(Address Resolution Protocol) - IP주소로부터 MAC주소의 다리 역할을 하는 프로토콜 - 논리적 주소와 물리적 주소를 변환시키는 역할 2. ARP & RARP (1) ARP : IP주소(논리적, 가상 주소) → MAC주소(물리적, 실제 주소) (2) RARP : MAC주소(물리적, 실제 주소) → IP주소(논리적, 가상 주소) 3. ARP주소를 찾는 과정 장치 A에서 ARP Request broadcast를 통해 찾고자 하는 IP주소에 해당하는 MAC주소를 탐색하면, 해당 주소와 일치하는 장치가 ARP Reply unicast를 통해 MAC주소를 반환하는 과정을 거쳐 IP주소에 맞는 MAC주소를 찾는다. - broadcast : 송신 호스트가 전송한 데.. 2023. 3. 26.
[C/C++] DFS, BFS 1. DFS(Depth First Search, 깊이 우선 탐색) (1) 깊이 우선 탐색이란? : 여러 개의 노드(node)가 간선(edge)으로 연결되어 있는 그래프(graph)에서 탐색을 진행하고자 할 때, 처음 탐색을 시작할 노드와 가장 가까운 노드를 방문한 후, 새로 방문한 노드와 가장 가까운 노드로 깊이 들어가는 방식이다. 한 노드에서 이동할 수 있는 여러 가지 노드를 한번씩 방문하는 것이 아니라, 가장 가까운 노드가 있다면 그 노드로 이동한 후 또 그 노드와 가장 가까운 노드로 또 이동하는 과정을 반복하는 것이다. 한 번 방문한 노드는 방문 표시를 하며 후에 거쳐갈 수는 있어도 다시 방문하지는 않는다. 탐색 시작 위치와 방향이 정해지지 않았다면 일반적으로 오름차순으로 이동하면 된다. (2) 기.. 2023. 3. 24.
[C/C++] 백준 18310, 정렬 문제 18310번: 안테나 (acmicpc.net) 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net 코드 #include #include using namespace std; int main() { int input[200000]; int N; cin >> N; for (int i = 0; i >input[i]; sort(input, input+N); cout 2023. 3. 9.
스터디 6주차 [CS 스터디] https://sangddongvoid.tistory.com/74 [코딩테스트] https://sangddongvoid.tistory.com/75 https://sangddongvoid.tistory.com/76 https://sangddongvoid.tistory.com/77 [C/C++] 백준 18310, 정렬 (tistory.com) [회고] struct를 오랜만에 쓰는 것 같다 복습한 느낌? 새 글로 정리해서 올리려고 한다 (class도 하려고 한다) 그리고 시간초과가 나오는 이유를 알게 되었다 코드 몇개만 추가하고 수정하니 바로 답이 나왔다 sqld 시험 끝나자마자 바로 자바 공부를 시작하려고 한다 후,, 갈길이 멀다 그리고 준희는 내 스터디를 뒷전으로 미뤗다 당당하게 와서 하나.. 2023. 3. 9.
[C/C++] 백준 1715, 정렬 문제 1715번: 카드 정렬하기 (acmicpc.net) 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 코드 #include #include using namespace std; int main() { priority_queue card; int N, result = 0; cin >> N; for (int i = 0; i > t; card.push(-t); } while (card.size() > 1) { int first = -card.top(); .. 2023. 3. 9.
[C/C++] 프로그래머스스쿨 실패율, 정렬 문제 코딩테스트 연습 - 실패율 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 #include #include #include using namespace std; struct num{ float users; float fail; int stage; }; bool cmp(struct num A, struct num B){ if (A.fail==B.fail) return A.stageB.fail; } vector solution(int N, vector stages) { vector answer.. 2023. 3. 8.