💡New Post
-
코딩테스트
[java/프로그래머스/12915] 문자열 내 마음대로 정렬하기 (Arrays.sort(strings, (s1, s2) -> s1.charAt(n) - s2.charAt(n))
✏️ 문제 설명문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.✏️ code📌 Arrays.sort(strings, (s1, s2) -> s1.charAt(n) - s2.charAt(n)): 음수면 s1이 앞으로, 양수면 s2가 앞으로✅ Arrays.sort가 작동하는 방식- compare(a, b)가 반환하는 값에 따라 다음과 같이 정렬됩니다.- a b = 양수면 b가 앞에 배치됨 / a == b 0이면 순서 유지됨📌 compareTo: 사전순 정렬..
-
코딩테스트
[java/프로그래머스/42748] K번째수 (Arrays.copyOfRange)
✏️ 문제 설명배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.✏️ code📌 Arrays.copyOfRange(원본 배..
-
코딩테스트
[java/프로그래머스/134240] 푸드 파이트 대회 (food[i]/2, sb.reverse().toString())
✏️ 문제 설명수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 먹을 수 있게 하려고 합니다. 이번 대회를 위해 수웅이는 음식을 주문했는데, 대회의 ..
📌 Study Tip
-
정보처리기사
페이지 교체 알고리즘 - FIFO, LRU, LFU
FIFO(First in First out, 먼저 들어온 것을 먼저 교체)1. 3개의 페이지 프레임을 갖는 시스템에서 페이지 참조 순서가 1, 2, 1, 0, 4, 1, 3일 경우 FIFO 알고리즘에 의한 페이지 교체의 경우 프레임의 최종 상태는?FIFO공간 3개1: 페이지 부재 발생1 2: 페이지 부재 발생1 21 2 0: 페이지 부재 발생4 2 0: 페이지 부재 발생FIFO: 먼저 들어온 것을 먼저 빼냄1 → 44 1 0: 페이지 부재 발생2 → 14 1 3: 페이지 부재 발생0 → 3프레임의 최종 상태4, 1, 3 2. 3개의 페이지 프레임을 가진 기억장치에서 페이지 요청을 다음과 같은 페이지 번호 순으로 요청했을 때 교체 알고리즘으로 FIFO방법을 사용한다면 몇 번의 페이지 부재가 발생하는가? (..
-
정보처리기사
[정보처리기사 실기] 프로그래밍 언어 활용 (C언어, JAVA, Python)
✏️ C언어, JAVA기본 데이터 타입 및 크기C언어JAVA자료형예약어(크기, byte)예약어(크기, byte)정수형short(2)int(4)long(4)unsignedbyte(1)short(2)int(4)long(8)실수형float(4)double(8)long doublefloat(4)double(8)문자형char(1)unsigned charchar(2)형 없음voidvoid논리형-boolean(1) C언어 연산자 우선순위비트연산자: 정수형 변수만을 대상으로 합니다. JAVA 연산자 우선순위 JAVA의 다형성: 오버로딩(Overloading), 오버라이딩(Overriding), 업캐스팅(UpCasting)오버로딩- 같은 클래스 내에서 같은 메소드명 중복 정의(매개변수의 자료형, 개수, 순서 상이)- 메..
-
코딩테스트
[java/프로그래머스/120924] 다음에 올 숫자 (등차수열, 등비수열 비교)
✏️ 문제 설명등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요. 제한사항2 -1,000 common의 원소는 모두 정수입니다.등차수열 혹은 등비수열이 아닌 경우는 없습니다.등비수열인 경우 공비는 0이 아닌 정수입니다.✏️ codeclass Solution { public int solution(int[] common) { int last = common.length - 1; if (common[1] - common[0] == common[2] - common[1]) { int diff = common[1] - common[0]; ret..
-
SQL 튜닝
[SQL튜닝/인덱스와 조인] Oracle DBMS 구조 (Database, Instance - SGA, Background Process, PGA)
🖥️ 들어가며📌 Oracle Database를 크게 나누면 다음과 같습니다.- Instance와 Database → Database: Data files, Control files, Redo Log files → Instance: SGA, Background Process- SGA: Shared Pool(Library Cache, Data Dictionary Cache), Data base buffer cache, Redo Logo Buffer- PGA와 SGA / Parameter file, Password file, Archived Log files ✏️ 1-1. Oracle Database - Instance - Background Process ⭐⭐⭐ PMON, SMON, DBWR, LGWR,..
-
SQL 튜닝
[SQL튜닝/옵티마이저 원리] 쿼리 변환1 (서브쿼리 Unnesting, push_subq, 뷰 Merging, 뷰 Merging이 불가한 경우)
🖥️ 들어가며📌 쿼리 변환이란?1. 휴리스틱 쿼리 변환- 결과만 보장된다면 무조건 쿼리 변환을 수행합니다.- 일종의 규칙기반 최적화 기법입니다.- 경험적으로 항상 더 나은 성능을 보일 것이라는 옵티마이저 개발팀의 판단이 반영되어 있습니다.2. 비용 기반 쿼리 변환- 변환된 쿼리의 비용이 더 낮을 때만 활용합니다.- 낮지 않을 경우, 원본 쿼리를 이용 최적화합니다.3. 오라클 버전에 따른 쿼리 변환의 변화- 8i: 복합 뷰(Complex View) Merging 을 사용자 힌트에 의해서만 수행- 9i: 결과가 보장될 수 있는 형태라면 무조건 변환 시도- 10g: CBO 모드로 동작하기 시작 (쿼리 변환의 결과가 더 나은 성능을 낼 것으로 판단될 때만 수행) ✏️ 1. 서브쿼리 Unnestingnest:..
-
SQL 튜닝
[SQL튜닝/고급SQL튜닝] 소트 튜닝 2 (소트 미발생 SQL 작성 최적화, 인덱스로 소트 연산 대체, 소트 영역 사용 최소화, PGA 메모리 관리, 수동 PGA와 병렬 쿼리를 함께 사용하지 않는 이유)
🖥️ 들어가며📌 소트 발생 최소화 전략- 소트 미발생 SQL 작성 최적화: UNION은 UNION ALL로, DISTINCT는 EXISTS 서브쿼리로, 불필요한 COUNT 제거- 인덱스로 소트 연산 대체: SORT ORDER BY 및 GROUP BY 대체- 소트 영역 사용 최소화: 소트 완료 후 데이터 가공, TOP-N 쿼리 형태로 작성(ROWNUM, STOPKEY)📌 PGA 메모리 관리- 자동 및 수동 관리: Oracle 9i부터 자동 기능 도입 (workarea_size_policy = auto 또는 manual)- 수동 PGA 관리 시 주의사항: 수동 PGA + 병렬 쿼리 함께 사용 시, 과도한 메모리 사용 및 시스템 리소스 고갈 가능성 높음 ✏️ 1. 소트가 발생하지 않도록 SQL 작성⭐⭐⭐..
-
정보처리기사
프로세스 스케줄링 - FCFS, SJF, HRN, SRT, RR
비선점FCFS(First come First served, 서비스를 받으러 도착한 순서대로)1. 다음은 CPU에 서비스를 받으려고 도착한 순서대로 프로세스와 그 서비스 시간을 나타낸다. FCFS CPU 스케줄링에 의해서 프로세스를 처리한다고 했을 때, 프로세스 평균 대기 시간은 얼마인가?프로세스버스트 시간(초)대기시간P1240 (바로 시작)P2324 (P1의 소요시간)P3327 (P1 + P2 소요시간 )24 + 27 = 5151 / 3 = 17 2. 다음과 같은 3개의 작업에 대하여 FCFS 알고리즘을 사용할 때, 임의의 작업 순서로 얻을 수 있는 최대 평균 반환 시간을 T, 최소 평균 반환 시간을 t라고 가정했을 때 T-t 값은?프로세스실행시간P19P23P312최대평균반환시간대기시간반환시간120 (바..