Algorithm 124

C언어로 연결리스트 자료 구조 구현해보기

자료 구조란? 자료 구조는 기존의 컴퓨터 메모리를 보다 더 효율적으로 사용 및 관리하기 위해 새로 정의하는 구조체로서 컴퓨터 메모리에 정보를 각기 다른 방법으로 저장할 수 있도록 해준다. 대표적으로 배열, 리스트, 해시, 세트 등이 있다. 연결리스트란? 각 인덱스 값이 메모리상 연이어 저장되어있는 정적인(static) 자료구조의 배열과 달리 연결리스트는 동적인(dynamic) 자료구조로 각 노드(Node)들이 메모리상의 여러 군데 나뉘어 있는데, 각 노드에서 자신의 값뿐만 아니라 다음 노드 값의 주소(포인터)도 저장하고 있어 배열과 동일하게 값을 연이어 읽을 수 있다. 이때 마지막 노드는 다음 값이 없으므로 NULL을 다음 값의 주소로 저장한다. 연결리스트의 시간복잡도 크기가 변경될 경우 배열은 메모리 ..

Algorithm/Basic 2022.01.09

[백준 - 10757] 큰 수 A + B - Java

문제 설명 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 풀이 1 : Fail(정수 오버플로우) 소스 코드 import java.util.*; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); char[] A = sc.next().toCharArray(), B = sc.next().toCharArray(); int maxLength = getMaxLength(A, B), result = 0, mul = 1; for (int i = maxLength -1; i > -1; i--) { result +=..

Algorithm/BOJ 2022.01.05

[백준 - 1076] 저항 - Java

문제 설명 1076번: 저항 첫째 줄에 첫 번째 색, 둘째 줄에 두 번째 색, 셋째 줄에 세 번째 색이 주어진다. 위의 표에 있는 색만 입력으로 주어진다. www.acmicpc.net 접근 방법 이 문제는 저항의 색 3개를 입력받게 되는데, 처음 색의 값은 십의 자리수 두번째 색의 값은 첫번째 자리수로 인식하고 세번째 색의 곱로 처음 색과 두번째 색으로 만들어진 십의 자리수를 곱해준다. 이때 색깔별 값과 곱은 정해진 값들이므로 Hashmap 자료구조를 이용했다. 처음 색과 두번째 색의 값을 StringBulider 객체로 이어주었고(문자열로) 세번째 색의 곱을 곱해주었는데, 다만 세가지 색 모두 white white white가 나오는 경우 99*1000000000의 값을 표현해야되기 때문에 BigIne..

Algorithm/BOJ 2022.01.05

[백준 - 1009] 분산처리 - Java

문제 설명 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000) www.acmicpc.net 풀이 1 : Fail(정수 오버플로우 발생) 소스 코드 import java.util.*; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); int T = sc.nextInt(); for (int i = 0; i < T; i++) { int a = sc.nextInt(), b = sc.nextInt(); long dataCnt = (long)..

Algorithm/BOJ 2022.01.05

유클리드 호제법을 이용한 최대공약수 구하기 - Java

유클리드 호제법이란? 유클리드 호제법은 알고리즘 기초 문제 중 하나인 최대공약수 구하기를 해결하기 위한 방법 중 하나로 적은 연산으로도 최대공약수를 구할 수 있다. 여기서 호제법이란 두 수가 서로를 나누어 원하는 수를 얻는 알고리즘을 나타낸다. 이때 2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 예를 들어, 99와 57의 최대공약수를 유클리드 호제법을 이용하여 구한다면, 다음과 같다. 99 % 57 = 42 → 나머지(42) != 0 57 % 42 = 15 → 나머지(15) != 0 42 % 15 = 12 → 나머지(12) != 0 15 % 12 = 3 → 나머지(3) != 0 12 % 3 = 0 → 나머지(0)..

Algorithm/Basic 2021.12.10