본문 바로가기
728x90

분류 전체보기230

알고리즘(C++) / 백준 2745 : 진법 변환 2745 boj.kr/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 입력 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다. 출력 첫째 줄에 B진.. 2021. 5. 9.
알고리즘(C++) / 백준 11005 : 진법 변환 2 11005 boj.kr/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 입력 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다. 출력 첫째 줄에 10진법 수 N을 B진.. 2021. 5. 9.
알고리즘(C++) / 백준 10451 : 순열 사이클 10451 boj.kr/10451 10451번: 순열 사이클 1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3 www.acmicpc.net 문제 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 순열의 크기 N (2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 순열이 주어지며, 각 정수는 공백으로 구분되어 있다. 출력 각 테스트 케이스마다, 입력으로 주어진 순열에 존재하는 순열 사이클의 개수를 출력한다. 코드 //10451 순열사이클 #include #in.. 2021. 5. 4.
알고리즘(C++) / 백준 9613 : GCD 합 9613 boj.kr/9613 9613번: GCD 합 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진 www.acmicpc.net 문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다. 출력 각 테스트 케이스마다 .. 2021. 5. 4.
알고리즘(C++) / 백준 1850 : 최대공약수 1850 boj.kr/1850 1850번: 최대공약수 모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A www.acmicpc.net 문제 모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A가 111이고, B가 111111인 경우에는 최대공약수가 111이다. 입력 첫째 줄에 두 자연수 A와 B를 이루는 1의 개수가 주어진다. 입력되는 수는 263보다 작은 자연수이다. 출력 첫째 줄.. 2021. 5. 4.
알고리즘(C++) / 백준 1934 : 최소공배수 1934 boj.kr/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 문제 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다. 두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진.. 2021. 5. 4.
디지털 논리회로 / Moore FSM과 Mealy FSM의 장단점 Moore FSM과 Mealy FSM Machine종류에는 moore machine과 mearly machine이 있다. Mealy machine : 출력이 현재 상태와 입력 모두에 의해서 결정된다. Glitch lssue에 의해 문제가 생길 수 있다. Mealy FSM : arcs indicate input / output Moore machine : 출력이 현재 상태에 의해서만 결정이 된다. Glitch issue 없이 안정적이다. 대부분의 system에서는 moore machine을 선호한다. 현재의 상태에만 의존을 하기 때문에 지금의 입력엔 무관하다. 좌측 : Moore machine, 우측 : Mealy machine Moore machine state에는 output이 정의 되어있다. Meal.. 2021. 5. 3.
디지털 논리회로 / Blocking과 non-blocking의 차이 Blocking Blocking 무언가를 막다라는 뜻을 가지고 있다. Blocking assignment는 simulation의 흐름을 막으면서 일을 하고 non-blocking은 막지 않으면서 일을 하고 있다. Blocking은 (=) 원패스이고 오른쪽 변수들이 업데이트 되는 순간에 왼쪽에 있는 변수들도 업데이트되는 것을 볼 수 있다. 예를 들어 a[3]=in;에서 in의 값이 바뀌는 순간에 a[3]도 1로 바뀌는 것을 알 수 있다. Blocking 문은 위에서부터 아래로 순서대로 실행되므로, 하나의 대입문의 실행이 완료되지 않으면 밑에 있는 대입문들은 처리되지 않는다. 대기상태를 가진다고 볼 수 있다. Execution flow within the procedure is blocked until th.. 2021. 5. 3.
디지털 논리회로 / carry와 overflow의 차이 4개 flag 중 carry와 overflow의 차이 C: MSB로부터 나오는 carry out 마지막 adder의 carry out이다. 64bit addition을 만들 때 하위 32bit addition과 상위 32bit addition 더하는데 C를 사용한다. Carry bit은 그 주어진 carry flag를 사용하여 다시 carry in 값으로 넣어주면서 상위 32bit을 더하는 데에 사용한다. C는 주어진 alu bit 수보다 큰 수를 연산할 때 더하거나 뺄 때 사용하게 된다. V : overflow는 31번째 co과 30번째 co을 exclusive한 것이다. overflow가 생기면 믿을 수 없는 연산결과가 생기기 때문에 flag C, N, Z가 모두 무의미하다. overflow가 생기지.. 2021. 5. 3.
디지털 논리회로 / carry look-ahead adder(CLA), 32-bits CLA와 32-bits RCA의 크기 속도 비교 CLA(carry look ahead adder)는 carry를 미리 보는 가산기인 ripple carry adder를 어떻게 하면 더 효율적으로 바꿀 수 있는가에 대한 고민에서 탄생한 회로이다. n-bits RCA는 full adder를 n개 연결시켜 만드는 가산기인데 여기서 n이 커질수록 full adder 연결사이에서 delay가 발생하게 되어 연산속도가 더 느려진다. Ripple이라는 단어의 뜻 그대로 carry 값이 아랫자리 수부터 파동 치며 올라와 마지막 full-adder의 Cin으로 값이 들어와야만 carry 값이 구해지므로 시간 낭비가 발생하게 된다. CLA는 generate와 propagate 두가지의 신호로 이루어져 있고, Gi = Ai * Bi , Pi = Ai + Bi 로 정의할 .. 2021. 5. 3.
디지털 논리회로 / halfadder, fulladder Halfadder 논리식 S = A ⊕ B, C = AB 1비트 이진수 두개를 더한 합 Sum(S)과 자리올림 수 Carry(C)를 구하는 회로이다. Fulladder 논리식 Co = ( A ⊕ B )Ci + AB, S = ( A ⊕ B ) ⊕ Ci 자리올림 수 Ci 한 개, 1비트 이진수2개, 총 3개의 이진수를 더하여 합(S)과 자리올림 수(Co)를 구하는 회로이다. RCA-4bit 2021. 5. 3.
디지털 논리회로 / 부호가 없는 수, 2의 보수, 병렬 이진 가감산기 부호가 없는 수(unsigned number, magnitude number) 부호가 없는 수(=unsigned number)은 말그대로 부호가 플러스 값 만을 가지는 것이다. 그 뜻은 마이너스 값이 없고 플러스 값 만을 가지는 것을 의미한다. 부호가 없는 수는 그냥 2진수 읽는 방법으로 읽게 되면 된다. 만약 4비트짜리 정수라면 0부터 15까지(0000~1111) 2의 세제곱만큼 값을 가지게 된다. 반대로 부호가 있는 정수의 표현방법은 sign magnitude, 1’s complement, 2’s complement가 있는데 이 수들은 앞의 수들이 부호를 나타나게 되어 마이너스와 플러스부호 두가지 경우를 나타낼 수 있다. 4비트짜리 정수라면 sign magnitude는 -7부터 7까지(1111~011.. 2021. 5. 3.