분류 전체보기 174

[알고리즘][비트연산] 2. 비트 스왑

문제: 임의의 64비트 수 x의 i번째 비트와 j번째 비트를 교환하라. (0 ≤ i, j ≤ 63) 일반적인 배열 내에서 특정 위치의 값들을 스왑하기 위해서는 그 값을 저장할 변수가 필요하다. 그러나 비트는 어차피 0과 1밖에 없기 때문에, 두 위치의 비트가 다를 때만 해당 위치들의 비트를 반전시켜주면 문제를 상수 시간 내에 해결할 수 있다. public static long swap(long x, int i, int j) { if (((x >>> i) & 1) != ((x >>> j) & 1)) { x ^= 1L

[알고리즘][비트연산] 응용 문제 1-3

문제: 입력값이 2의 거듭제곱인지 확인하라. 2의 거듭제곱인 수는 1로 세팅된 비트가 하나뿐이다. 모든 비트를 검사하는 방법보다 빠른 방법이 존재할까? XOR? AND? OR? 보수? 2의 보수? 4비트 입력을 가지고 여러 가지 시도를 해 본 결과, 2의 거듭제곱, 즉 1로 세팅된 비트가 하나 뿐인 이진수는 x = ~((x-1) OR ~x))를 만족하는 반면, 1이 두 개 이상 포함된 수는 저 식을 만족하지 않는다. 아래 표는 4비트 입력에 대한 모든 경우의 수를 확인해 본 결과이다. x 0000 0001 0010 0011 0100 0101 0110 0111 x - 1 0000 0001 0010 0011 0100 0101 0110 ~x 1110 1101 1100 1011 1010 1001 1000 (x-..

[알고리즘][비트연산] 응용 문제 1-1

문제: 임의의 64비트 2진수가 주어지면, 1로 설정된 비트 중 가장 낮은 자리의 오른쪽에 위치하는 모든 비트를 1로 설정하라. 입력 예시: 0100...1000 출력 예시: 0100...1111 해설 이 문제는 이진수의 성질을 이용하면 간단히 풀린다. 입력에서 1을 뺀 값을 입력과 OR하면 된다. 입력에서 1을 빼면 가장 낮은 자리의 1이 내림되어 그보다 낮은 자리가 전부 1로 채워지기 때문이다. public static long carry(long x) { return ((x - 1) | x); }

[알고리즘][비트연산] 1. 패리티(Parity) 계산하기

어떤 2진수에 존재하는 1의 개수가 홀수개면 패리티는 1이 되고, 짝수개면 0이 된다. 예를 들어, 14=1110(2)에는 1이 홀수개 있으므로 패리티는 1이 된다. 1️⃣ 만약 임의의 64비트 2진수의 패리티를 구하는 프로그램을 작성한다면, 가장 먼저 떠올릴 수 있는 단순한 방법은 1이 홀수개인지, 짝수개인지 모든 비트를 검사하는 것이다. 검사(x & 1)하는 비트값이 0이든 1이든 하나씩 확인하므로 이 방법은 입력된 2진수의 크기 n에 따라 O(n)이 걸린다. public static short getParity(long x) { short result = 0; while (x != 0) {// x가 0이 될 때까지 오른쪽 시프트 할 예정 result ^= (x & 1);// x의 LSB가 1이면 초..

[Java] 비트 연산자(Bitwise Operators) 정리

1. 논리곱(AND) & 입력 비트가 모두 1인 경우 출력이 1인 연산 byte a = 10; // 1010 byte b = a & 2; // 00001010 // 00000010 // 00000010 System.out.println(b); // 2 2. 논리합(OR) | 입력 비트 중 한 개 이상이 1인 경우 출력이 1인 연산 byte a = 10; // 1010 byte b = a | 2; // 00001010 // 00000010 // 00001010 System.out.println(b); // 10 3. 배타적 논리합(eXclusive OR) ^ 두 입력이 서로 다른 경우 출력이 1인 연산 byte a = 10; // 1010 byte b = a ^ 2; // 00001010 // 000000..

TOPCIT 연습문제 (주관적)정답 - 모듈1

TOPCIT은 정보통신기획평가원에서 주관하는 소프트웨어 역량검정인데, 소프트웨어산업진흥법에 근거를 두고 시행되고 있습니다. 고득점자는 협약기관 입사지원 시 서류전형에서 가산점을 주는 정도까지만 인정해 주고 있습니다. 정보처리기사와 범위가 유사하나 난이도가 좀 더 높다고 합니다. TOPCIT 홈페이지에는 시험 환경을 체험해볼 수 있는 페이지가 있습니다. 연습 문제도 20개 정도 있는데(실제 시험에서는 65개), 정답이 나와있지 않기 때문에 제가 아는 선에서 정답이라고 생각하는 답을 정리해 보았습니다. 문제의 출처는 https://topcit.or.kr/board/preview.do 입니다. 나머지 문제는 생각나는 대로 추가로 정리하려고 합니다. SW-문2. CPU 스케줄링 방법 중 다음과 같은 상황을 해결..

Certifications 2023.05.25

2023 공공기관 현황 및 기관별 신입사원초임, 직원평균보수

공공기관이란 정부의 출연·출자 또는 정부의 재정지원 등으로 설립·운영되는 기관으로서 공공기관운영법 제4조 1항 각호의 요건에 해당하여 기획재정부장관이 지정한 기관을 의미합니다. 2023년 공공기관 현황은 아래와 같습니다. 전년도에 비해 공기업 4개, 준정부기관 39개가 기타공공기관으로 변경 지정되었습니다. 다음으로는 기관별 신입사원 초임과 직원평균보수를 알아보겠습니다. 표의 "경영평가성과급"은 기재부 지침에 따른 성과급으로 1분기와 3분기에 지급되고, "기타성과상여금"은 기관 내부의 성과 평가에 따른 상여금으로 2분기와 4분기에 지급됩니다. 아래 자료는 잡알리오(job.alio.go.kr) 데이터를 연간급여 합계 내림차순으로 정렬한 자료입니다. 1. 전 공공기관 신입사원초임 # 기관명 합계 고정수당 실적..

일상 2023.05.20

[소프트웨어공학] 제11장 액티비티 다이어그램

1. 단원 요약 액티비티, 액션, 제어흐름 액티비티: 일련의 액션들과 그 제어흐름으로 구성된 작업 단위, 모서리가 둥근 사각형 액션: 액티비티 수행에 필요한 더 이상 분해 불가한 단일 작업, 모서리가 둥근 사각형 제어흐름: 각 액션에 대한 입력흐름과 출력흐름, 화살표 제어노드 시작/종료: 액티비티의 시작과 종료를 표현 액티비티 시작 노드: ⬤ 액티비티 종료 노드: ⦿ 흐름 종료: 액티비티가 아닌 특정 흐름의 종료를 표현 흐름 종료 노드: ⊗ 조건 노드: 조건문과 같은 의미이며, 마름모로 표시 병합 노드: 조건에 따른 흐름들이 합쳐지는 부분이며, 마름모로 표시 포크/조인 노드: 병렬 처리를 표현하며, 굵은 막대로 표시 객체, 객체흐름 객체란 액션의 입/출력 데이터로, 간혹 물리적인 객체이기도 함 객체 노드..

[소프트웨어공학] 제10장 유스케이스 다이어그램 및 명세

1. 단원 요약 개요 UML (Unified Markup Language) 1.0: OMG, 1997 UML 2.5: OMG, 2015 4+1 View Usecase View: 유스케이스 다이어그램 Logical View: 상호작용 다이어그램(시퀀스 다이어그램, 통신 다이어그램) Process View: 액티비티 다이어그램 Development View Physical View UML 2.5 다이어그램 유스케이스 다이어그램: 구조적, 행위적 측면을 모두 표현한다. 구조 다이어그램 클래스 다이어그램 객체 다이어그램 패키지 다이어그램 컴포넌트 다이어그램 배포 다이어그램 행위 다이어그램 액티비티 다이어그램 상태머신 다이어그램 상호작용 다이어그램 시퀀스 다이어그램 통신 다이어그램 액터: 막대인간, 아이콘, 스테..

[소프트웨어공학] 제9장 객체지향 분석과 설계

1. 단원 요약 개요 "객체지향 분석과 설계"는 제6장 사용자 요구 분석(요구공학) 단원의 "요구사항 모델링"에 관한 설명 중 "객체지향 분석 모델"을 기초로 수행된다. 객체지향 분석: 문제 도메인을 분석하여 개념 모델을 작성하는 과정 객체지향 분석의 결과물은 시스템이 수행하는 기능을 설명하는 모델이다. 유스케이스, 클래스, 상호작용 다이어그램 객체지향 설계: 객체지향 분석 단계의 결과물을 비기능적 요구사항과 아키텍처를 고려하여 변환하는 과정 = 개념 클래스들을 구현 클래스들로 변환하는 과정 요구사항 추출 요구 공학: 요구사항 추출을 위한 활동 액터 찾기 시스템과 상호작용하는 사람, 외부 시스템을 찾는다. 유스케이스를 시작시키거나 그로부터 정보를 제공받는 액터를 "참여 액터"라고 부른다. 시나리오 찾기 ..