IT/Algorithm 2020. 2. 25.
[알고리즘] 올바른 괄호 확인 문제
문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 ()() 또는 (())() 는 올바른 괄호입니다. )()( 또는 (()( 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. function solution(s){ let answer =..
IT/Algorithm 2018. 6. 17.
[JAVA/자료구조] DoublyLinkedList 더블링크드리스트 코드 알아보기
[JAVA/자료구조] DoublyLinkedList 더블링크드리스트 코드 및 알아보기 https://visualgo.net/en/list 그림으로 알아보기 위와 같은 구조가 더블링크드리스트 ( DoublyLinkedList ) 입니다. 노드와 노드가 서로 연결되어 있다는 점이라는 장점이 있습니다. 단순열결리스트와는 다르게 이전 노드와 다음 노드로 구성되어 있습니다. 단점으로는 이전 노드를 지정하기 위한 변수를 하나 더 사용해야 합니다. 메모리를 더 많이 사용한다는 의미이기도 하죠 왜그런지는 코드를 통해서 알아보도록 하겠습니다. public class DoblyLinkedList {private Node head;privateNode tail;private int size = 0;private class ..
IT/Algorithm 2018. 5. 12.
[Java/알고리즘] 1부터 100까지의 소수의 합을 구하자! (에라토스테네스의 체)
[Java/알고리즘] 1부터 100까지의 소수의 합을 구하자! (에라토스테네스의 체) 1부터 100까지의 소수의 합을 구하기 위해서는 우선 소수에 대해서 알아야 합니다. 소수는 1과 자기자신만으로 나누어지는 수를 소수라고 합니다. 예를들어 17은 1과 17만으로 나누어집니다.하지만 15는 1,3,5,15 로 나누어 지죠그럼 17은 소수라고 할 수 있습니다. 아래는 그냥 에라토스테네스의 체를 사용하지 않은 소수 구하기 입니다.public class Prime {public static void main(String args[]){ // 합을 구하기 위한 변수int sum = 0;// 1은 제외해야 하기 때문에 2부터 시작 for(int num=2; num
IT/Algorithm 2018. 4. 21.
[JAVA/알고리즘] factorial 팩토리얼 코드 알아보기 (재귀, 기본)
[JAVA/알고리즘] factorial 팩토리얼 코드 알아보기 오늘은 factorial 를 코드를 통해서 알아보도록 하겠습니다. 5! = 5 * 4 * 3 * 2 * 1 을 만족하는 것이 팩토리얼( ! ) 입니다. 코드를 보겠습니다. public class factorial {public static void main(String[] args) {int n = 1;int result = 0;int end = 5;for(int i = n; i
IT/Algorithm 2018. 4. 10.
[JAVA/자료구조] LinkedList 단순연결리스트 코드 및 알아보기
[JAVA/자료구조] LinkedList 링크드리스트 코드 및 알아보기 https://visualgo.net/en/list 그림으로 알아보기 위와 같은 구조가 단순연결리스트 ( LinkedList ) 입니다. 삽입/삭제가 ArrayList보다 빠르다는 장점이 있습니다. 단점으로는 ArrayList는 무작위 접근이 가능하지만 LinkedList 에서는 순차접근만이 가능합니다. 왜그런지는 코드를 통해서 알아보도록 하겠습니다. 우선적으로 class를 만들어 줍니다. 이름은 LinkedList로 만들겠습니다. public class LinkedList {private Node head; // 맨 앞 정보를 가지고 있는 head 노드private Node tail; // 맨 끝 정보를 가지고 있는 tail 노드p..
IT/Algorithm 2018. 4. 2.
[JAVA/알고리즘] Quicksort 큌정렬을 알아보자!
[JAVA/알고리즘] Quicksort 큌정렬을 알아보자! 우선 아래 홈페이지 https://opentutorials.org/course/543/2723 오픈튜토리얼에서 각각의 정렬 원리를 잘 설명한 동영상을 보실 수 있습니다. 퀵 정렬이란? 퀵 정렬은 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘이다. 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬에 속한다. 퀵 정렬은 n개의 데이터를 정렬할 때, 최악의 경우에는 O번의 비교를 수행하고, 평균적으로 O번의 비교를 수행한다. 퀵 정렬의 내부 루프는 대부분의 컴퓨터 아키텍처에서 효율적으로 작동하도록 설계되어 있고, 대부분의 실질적인 데이터를 정렬할 때 제곱 시간이 걸릴 확률이 거의 없도록 알고리즘을 설계하는 것이 가능하다고 합니다. 소스코드를 짜기 ..
IT/Algorithm 2018. 3. 27.
[JAVA/자료구조] 큐(Queue)와 스택(Stack) 코드 구현하기
[JAVA/자료구조] 큐(Queue)와 스택(Stack) 구현하기 Java로 큐와 스택을 구현을 해봅시다 우선 큐와 스택을 알아야겠죠? 큐(Queue)란 선입선출 구조입니다. 먼저들어온게 먼저나간다는 소리입니다. 예를 들면 영화 티켓구매하기 위해서는 줄을 서야하겠죠? 맨 앞사람이 가장 빨리 왔으니 가장빨리 예매를 하겠죠? 그림으로 보자면 반대로 스택(Stack)은 후입선출 구조입니다. 나중에 들어온게 먼저 나간다는 소리입니다. 예를 들자면 뷔폐에 있는 접시를 생각하면 되겠습니다. 맨 위에 접시가 올려지고 맨 위 접시가 가장 빨리 나갑니다. 그림으로 보자면 그럼 이제 큐와 스택을 이해했으니 실제로 구현을 해봅시다 먼저 큐(Queue) 입니다. public class Queue { private int fr..
IT/Algorithm 2018. 3. 15.
[JAVA/알고리즘] DFS(깊이 우선 탐색) BFS(너비 우선 탐색) 코드 정리
[JAVA/알고리즘] BFS DFS 정리 BFS 는 너비 우선 탐색을 뜻하고 꼭지점의 형제들을 우선으로 탐색한다고 설명하고 있습니다. public class bfs {// 노드의 수static int n = 7; static int arr[][] = {{0,0,0,0,0,0,0,0},{0,0,1,1,0,0,0,0},{0,1,0,0,1,1,1,0},{0,1,0,0,0,0,0,0},{0,0,1,0,0,0,0,0},{0,0,1,0,0,0,0,1},{0,0,1,0,0,0,0,0},{0,0,0,0,0,1,0,0}};public static void main(String[] args) { // 탐색한 곳을 확인하기 위함int f[] = new int[n+1]; int q[] = new int[7];int head ..
IT/Algorithm 2017. 7. 1.
코딜리티 ( Codility ) 알고리즘 문제풀이 사이트 시작해봅시다.
오늘은 코딜리티 (Codility) 에 대해서 포스팅 하겠습니다. 코딜리티 ( Codility ) 는 알고리즘 문제 풀이 사이트 입니다. 사이트 https://codility.com/programmers 코딜리티 메인 화면 입니다. Refactor yourself 더 나은 프로그래머가 되어보자 라고 합니다. 알고리즘 문제를 풀기 위해서는 우선 회원가입을 해줍시다. 오른 쪽 위에 있는 Sign up 버튼을 선택하여 회원가입을 시작해 줍니다. 회원가입을 완료하면 이메일을 통해서 인증을 한 후 로그인을 하여야 합니다. 그럼 홈페이지 처음 화면에 보였던 See all Lessons 를 클릭해서 모든 문제를 봅시다. 그럼 아래와 같은 화면이 나옵니다. 왼쪽에 보이는 Lesson 들을 선택하면 해당 관련 알고리즘 ..