전체 글 80

자바 - 프로그래머스 / 연속된 부분 수열의 합

https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV 2 구현 방법 5 ≤ sequence의 길이 ≤ 1,000,000 이므로 이중 포문 돌리면 런타임 에러 뜬다 이럴 때 쓰는 방법이 바로 투 포인터 알고리즘! O(n)으로 가능하다. 투 포인터 알고리즘을 사용해서 시작 부분, 끝 부분 두가지 포인터를 만들어서 원하는 연속된 합에 부합할때 까지 포인터를 움직이는 방법으로 구현했다. 원하는 값보다 작은 경우 끝 부분 포인터를 움직혀 합을 크게 하..

알고리즘 2023.04.24

2021 정보처리기사 실기 요약

Authentication(인증) 시스템을 접근하기 전에 접근 시도하는 사용자의 신원을 검증 Authorization(인가) 검증된 사용자에게 어떤 수준의 권한과 서비스를 허용 Accounting 사용자의 자원(시간,정보,위치 등)에 대한 사용 정보를 수집 데이터 제어어(DCL) - GRANT - 데이터베이스 사용자에게 사용 권한을 부여하는데 사용하는 명령어 ARP(Address Resolution Protocol) ARP 스푸핑은 근거리 통신망 하에서 ARP 메시지를 이용하여 상대방의 데이터 패킷을 중간에서 가로채는 중간자 공격 기법이다. 이 공격은 데이터 링크 상의 프로토콜인 ARP를 이용하기 때문에 근거리상의 통신에서만 사용할 수 있는 공격이다. Coupling(결합도) 결합도 강한순서 내공외제스자..

기타 2023.04.23

2022 정보처리기사 실기 요약

관계 대수 - 일반 집합 연산자 합집합 : ∪ 교집합 : ∩ 차집합 : - 카티션 프로덕트 : X - 순수 관계 연산자 select : δ 프로젝트 : π 조인 : ⋈ division : ÷ 디자인 패턴 - Bridge 구현과 추상화 독립적 변경 필요할때 사용 기능 처리 클래스, 구현 담당 추상 클래스로 구별 기존 시스템에 부수적인 새로운 기능들을 지속적으로 추가할 때 사용하면 유용 새로운 인터페이스 정의하면 기존 프로그램의 변경 없이 기능 확장 가능 - Observer 한 객체의 상태가 변하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달해주는 패턴 일대다 관계 분산된 시스템 간에 이벤트를 생성/발행 하고, 이를 수신해야 할 때 이용 문제 192.168.1.0/24인 네트워크를 FLSM 4개..

기타 2023.04.22

자바 - 프로그래머스 / 행렬 테두리 회전하기

https://school.programmers.co.kr/learn/courses/30/lessons/77485 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Lv 2 구현 방법 조건은 queries의 행의 개수(회전의 개수)는 1 이상 10,000 이하입니다. 1 ≤ x1 startRow; j--) { plate[j][endCol] = plate[j - 1][endCol]; min = Math.min(min, plate[j][endCol]); } plate[startRow + 1][endCol] = firstNum; answer[i] = min; } ..

알고리즘 2023.04.21

자바 - 프로그래머스 / 추억 점수

https://school.programmers.co.kr/learn/courses/30/lessons/176963 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV 1 구현 방법 제한 사항 3 ≤ name의 길이 = yearning의 길이≤ 100 3 ≤ photo의 길이 ≤ 100 1 ≤ photo[i]의 길이 ≤ 100 이므로 photo를 이중 포문 돌려도 된다. 또한 name과 yearning을 해시 맵으로 만들면 이름 비교는 O(1)으로 해결 됨. 따라서 HashMap 필요하다. 문제는 해시맵에서 이 key값이 존재 하는지 확인하는 과정이 필요..

알고리즘 2023.04.18

3장 - 스프링 부트에서 JPA로 데이터베이스 다뤄보자

Entity 클래스에서 Setter 메소드 절대 만들면 안된다. 그 대신 해당 필드 값 변경을 위해서 명확히 목적과 의도를 나타 낼 수 있는 메소드를 추가한다. 이렇게 하면, 해당 클래스의 인스턴스 값들이 언제 어디서 변해야 하는지 알 수 있고, 나중에 기능 변경 시에도 덜 복잡해진다.   public class Car { public void speedUp() { this.speed += 1; }}public void 자동차_속도올리기() { Car.speedUp();} Setter를 대신해서 값을 만들어서 DB에 삽입하는 방법 생성자나 @Builder를 통해 최종값을 채운 후, DB에 insert 한다.  생성자보다 @Builder를 사용했을때의 장점은 채워야 할 필드가 무엇인지 명확히 지정..

개발 2023.04.17

자바 - 프로그래머스 / 달리기 경주

https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LV 1 구현 방법 처음 : 이중 포문으로 원하는 값 찾아서 위치 바꾸기 하지만, 3 ≤ players[i]의 길이 ≤ 10 2 ≤ callings의 길이 ≤ 1,000,000 으로 이중 포문 돌리니까 런타임 에러 뜸 나중 : players 배열을 해시맵으로 바꿔서 원하는 값 찾을때 O(1)로 바꿔서 구현 주의점은 랭킹 바꿀때 players 배열만 업데이트 하는게 아니라 해시맵 정보도 업데이트 ..

알고리즘 2023.04.17

자바 - 백준 20055 / 컨베이어 벨트 위의 로봇

https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 골드5 구현 방법 구현 문제라서 문제에 적힌대로 코드 작성하면 된다. 딱히 사용한 자료구조나 알고리즘도 없다. 2 ≤ N ≤ 100 1 ≤ K ≤ 2N 1 ≤ Ai ≤ 1,000 조건도 위와 같아서 O(n^2)도 충분히 가능하다. 주의할 점은 로봇 위치 이동에 따라 로봇 올리는 곳과 로봇 내리는 곳 신경써서 구현해야 한다. 코드 package boj; import java.i..

알고리즘 2023.04.13

자바 - 백준 12101 / 1, 2, 3 더하기 2

https://www.acmicpc.net/problem/12101 12101번: 1, 2, 3 더하기 2 n을 1, 2, 3의 합으로 나타내는 방법 중에서 사전 순으로 k번째에 오는 것을 출력한다. k번째 오는 식이 없는 경우에는 -1을 출력한다. www.acmicpc.net 실버1 구현 방법 n은 양수이며 11보다 작고, k는 2^31-1보다 작거나 같은 자연수라서 이중 포문 써도 된다. 1. n까지 가지는 총 갯수를 저장하는 배열 만들기 2. 2차원 dp를 만들어서 숫자별로 합을 나타낼 수 있는 경우들 배열에 저장하기 3. bottom-up 방식의 점화식을 이용해서 원하는 값까지 저장하기 4. 사전순으로 정렬하기 코드 import java.io.BufferedReader; import java.io..

알고리즘 2023.04.10

화면 웹 다이어그램 정보 DB 테이블 설계 - jsonb

사용할 DB - postgreSQL json, jsonb postgreSQL에서 사용하는 기본 자료형중 하나인 json에서 key-value의 방식이 포함된 기본 자료형을 말한다. json - 입력된 공백, 키, 순서, 중복등 모든 것 그대로 저장 => 질의 할 때 속도가 느림 쓰기 비용 안큼, 일기 비용 상대적 큼 jsonb - 입력된 값을 질의에 최적화된 형태로 저장 - 키의 순서, 중복 제거, 공백 제거 => 질의 할 때 json 보다 빠름 쓰기 비용 큼(바이너리 포맷으로 저장), 인덱싱 가능, 데이터 파싱 비용 적음 따라서 저장 이후, 질의 발생 안하면 json 사용/질의 발생 자주하면 jsonb로 저장하면 된다. 근데 특별한 사유 없으면 jsonb 사용하는게 좋다고 함. jsonb 장점 개발 운..

기타 2023.04.04