Dev/Algorithm 39

[책] 누구나 자료 구조와 알고리즘 - 출퇴근 시간 100% 활용!!

'간단하게' 책 리뷰를 해보겠습니다!!! 제가 페이스북 길벗 출판사에서 진행한 이벤트에 당첨이 되어서 책을 받게 되었습니다!! (흐뭇흐뭇)제가 받은 책은 누구나 자료 구조와 알고리즘 입니다. 페이스북 이벤트 주소 저는 직업으로서 안드로이드 개발을 3년정도 했습니다. 그러나 알고리즘 공부는 하다말다를 꽤나 반복했으며, 지금까지 잘 모르는 상태로 지내고 있습니다. 다만, 이번의 서평이라는 과제 덕분에 좀 더 마음먹고 책을 읽으며 공부를 할 수 있었고 그 덕분에 이론이 머리에 와닿기 시작했습니다. 하지만 갈길은 아직 많이 남았다고 생각합니다..... ㅠㅠ [아주 지극히 주관적인 책의 특징 3가지] 1. 책 크기는 작고 얇아서 가져다니기 쉽습니다.2. 어려운 내용이 아니기에 집중하기가 편합니다.3. 섹션마다 내..

Dev/Algorithm 2018.08.31

1D1A - One Day One Algorithm

1D1A - One Day One Algorithm 최대공약수와 최소공배수두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환해주는 gcdlcm 함수를 완성해 보세요. 배열의 맨 앞에 최대공약수, 그 다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 gcdlcm(3,12) 가 입력되면, [3, 12]를 반환해주면 됩니다. import java.util.Arrays;import java.util.ArrayList;import java.util.List; class TryHelloWorld { public int[] gcdlcm(int a, int b) { int[] answer = new int[2]; List al = new ArrayList(); List bl = new ArrayList(); f..

Dev/Algorithm 2018.03.30

1D1A - One Day One Algorithm

1D1A - One Day One Algorithm 최솟값 만들기 자연수로 이루어진 길이가 같은 수열 A,B가 있습니다. 최솟값 만들기는 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한 값을 누적하여 더합니다. 이러한 과정을 수열의 길이만큼 반복하여 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다. 예를 들어 A = [1, 2] , B = [3, 4] 라면 A에서 1, B에서 4를 뽑아 곱하여 더합니다.A에서 2, B에서 3을 뽑아 곱하여 더합니다.수열의 길이만큼 반복하여 최솟값 10을 얻을 수 있으며, 이 10이 최솟값이 됩니다.수열 A,B가 주어질 때, 최솟값을 반환해주는 getMinSum 함수를 완성하세요. public int getMinSum(int[] A, int[] B) { ..

Dev/Algorithm 2018.03.26

CS50 공부 - 알고리즘

링크주소 : http://www.edwith.org/cs50 버블정렬 (Bubble Sort) : 인접한 두 수를 비교해서 큰 수를 뒤로 보내는 정렬 방법이다.시간복잡도 O(n²)삽입정렬 (Insertion Sort) : 정렬되지 않은 숫자들을 하나씩 빼서 정렬되어 있는 숫자 사이의 올바른 위치에 삽입하는 정렬 방법이다. 삽입 정렬은 자료의 양이 적을 때 성능이 우수하며 자료 대부분이 이미 정렬이 되어있는 경우 효율적이다.선택정렬 (Selection Sort): 배열 안의 자료 중 가장 작은 수(혹은 가장 큰 수)를 찾아 첫 번째 위치(혹은 가장 마지막 위치)의 수와 교환해주는 방식의 정렬 방법이다.합병정렬 (Merge Sort) : 원소가 한 개가 될 때까지 계속해서 반으로 나누다가 다시 합쳐나가며 정..

Dev/Algorithm 2018.03.20

1D1A - One Day One Algorithm

문제 - 최대공약수와 최소공배수 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환해주는 gcdlcm 함수를 완성해 보세요. 배열의 맨 앞에 최대공약수, 그 다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 gcdlcm(3,12) 가 입력되면, [3, 12]를 반환해주면 됩니다. 기본제공import java.util.Arrays; class TryHelloWorld { public int[] gcdlcm(int a, int b) { int[] answer = new int[2]; return answer; } // 아래는 테스트로 출력해 보기 위한 코드입니다. public static void main(String[] args) { TryHelloWorld c = new TryHelloWorld(..

Dev/Algorithm 2018.03.19

CS50 공부 - 알고리즘

의사코드는 프로그래밍언어보다 문법적 제약을 적게 받는 알고리즘 표현 방법이다. 선형탐색(순차탐색)은 원하는 원소가 발견될 때까지 처음부터 마지막 자료까지 차례대로 탐색한다.1. 정확하지만 아주 효율적이지 못한 방법이다.2. 자료가 정렬되어 있지 않거나 그 어떤 정보도 없어 하나씩 찾아야 하는 경우에 유용하다. 이진탐색은 정렬된 데이터를 좌우 둘로 나워서 원하는 값의 탐색 범위를 좁혀가며 찾는 방법이다.추가 포스팅1. CS50 알고리즘 - 버블정렬, 선택정렬, 삽입정렬(링크)

Dev/Algorithm 2018.03.19

1D1A - One Day One Algorithm

문제 - 행렬의 덧셈 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬을 입력받는 sumMatrix 함수를 완성하여 행렬 덧셈의 결과를 반환해 주세요.예를 들어 2x2 행렬인 A = ((1, 2), (2, 3)), B = ((3, 4), (5, 6)) 가 주어지면, 같은 2x2 행렬인 ((4, 6), (7, 9))를 반환하면 됩니다.(어떠한 행렬에도 대응하는 함수를 완성해주세요.) 제출 답안class SumMatrix {int[][] sumMatrix(int[][] A, int[][] B) {int[][] answer = new int[A.length][A[0].length]; for (int i = 0; i < answer.length; ..

Dev/Algorithm 2018.03.14

10진수를 2진수로 - 입력값을 진법수에 맞게 출력

입력받은 숫자를 원하는 진법의 수로 변환 * Language : Java int input = 133; // 입력값int number = 2; // 진수int temp = 0;int divide = input; List numberList = new ArrayList(); while (divide != 0) { temp = divide % number; numberList.add(temp); divide = (divide - temp)/number;} List reverseNumberList = new ArrayList();for (int i = numberList.size(); i>0; i--) { reverseNumberList.add(numberList.get(i-1));}

Dev/Algorithm 2018.03.07