2020/04 9

[DO IT MYSELF] 기술면접대비 - (2)

1. Java와 Javascript의 차이점을 설명하시오. 👉🏻 자바는 객체지향 프로그래밍의 대표적인 언어로서 JVM이라는 가상 머신을 이용하기 때문에 운영체제 종류에 관계없이 대부분의 시스템에서 실행됩니다. 또한, 변수 자료형이 반드시 선언되어야 하며 소스코드를 자바 바이트 코드로 변환해야 하는 컴파일 과정을 거칩니다. 자바스크립트는 HTML의 상호작용성과 동적인 시각효과를 나타내기 위한 객체 기반 스크립트 언어입니다. 자바와 달리 변수 자료형을 선언하지 않아도 브라우저가 자동으로 파악하며, 인터프리터 언어로서 컴파일 과정을 거치지 않습니다. 즉, 자바와 자바스크립트의 차이점은 컴파일의 과정이 다르며 자바는 서버측의 언어이고, 자바스크립트는 클라이언트용 언어라는 것입니다. JVM이란? 자바 바이트 코드..

기술면접대비 2020.04.24

[Algorithm] 그리디 알고리즘(탐욕법)에 대해 쉽게 알아보자

💡 그리디 알고리즘 그리디 알고리즘은 한국어로 탐욕 알고리즘 이라고도 하며 결정해야 하는 순간 가장 좋다고 생각하는 것을 선택하면서 답을 찾아가는 알고리즘을 말합니다. 이 방식의 한계점은 그 순간에는 최적일지도 모르지만, 최종적으로는 답이 아닐 수 있는 경우가 많기 때문에 그리디 알고리즘을 사용한 경우, 최적이라는 걸 입증하는게 쉽지 않습니다. 그래도 입증만 한다면 구현하는건 다른 알고리즘에 비해 쉬운 편입니다. 아래 문제를 보면서 이해해보도록 하겠습니다. ** 그래서 그리디 알고리즘으로 문제를 어떻게 푸는건가요? 그리디 알고리즘은 무조건 큰 수부터 채워서 최소값을 구하는 것입니다. 예를 들어 동전 문제가 있습니다. 만약, 177원을 만든다면 100원 1개 10원 2개 5원 1개 1원 2개의 동전을 주면..

기술면접대비 2020.04.09

[Algorithm] 완전탐색(Exhaustive Search)에 대해 쉽게 알아보자

💡 완전탐색 알고리즘 문제를 해결하는 데 가장 간단하고 쉬운 방법이 무엇일까? 답은 가능한 경우를 다 해보는 것이다. 이게 무슨 알고리즘이야? 할 수 있겠지만, 이것도 알고리즘에 일종이다. 전산학에서는 이를 무식하게 푼다라는 뜻의 Brute-force라 하고, 전체를 확인한다고 해서 완전 탐색 알고리즘(exhaustive search algorithm)이라고 한다. ** ☝🏻 그렇다면 완전탐색은 대체 언제 쓰이는건가요? 사실, 알고리즘 대부분의 문제들은 시간 초과등의 이유로 완전 탐색으로 풀리지 않습니다. 하지만 어려운 알고리즘을 생각할 필요 없이 완전 탐색으로 풀리는 문제도 있으며, 가끔 어려운 완전 탐색 문제도 존재합니다. 따라서, 완전 탐색 알고리즘을 문제 풀이 도구로 항상 염두해두고 있어야합니다...

기술면접대비 2020.04.09

[DO IT MYSELF] 기술면접대비 - (1)

1. ArrayList와 LinkedList의 차이가 무엇인지 설명하시오. 👉🏻 ArrayList는 길이가 동적으로 변하는 가변배열입니다. 데이터를 삽입하거나 삭제할 때 내부에 임시배열을 작성 후 데이터를 복사하는 방법을 사용합니다. 반면, LinkedList는 주소형식으로 리스트를 묶은 것이기 때문에 중간에 데이터가 삽입이 되면 이전 데이터의 주소만 변경해주면 되기 때문에 데이터의 삽입 및 삭제가 용이합니다. 즉, ArrayList에 비해 공간적 제약을 받지 않는다는 장점이 있습니다. 2. 자바의 접근 제한자는 어떤 것이 있는지 설명하시오. 👉🏻 자바의 접근제한자에는 public, private, protected, default 총 4가지가 있습니다. 1. public은 같은 패키지뿐만 아니라 다른 ..

기술면접대비 2020.04.05

[프로그래머스] 문자열 내림차순으로 배치하기

💡 문제 💡 나의 풀이( 점수 : 100/100 ) import java.util.*; class Solution { public String solution(String s) { String answer = ""; char[] array = s.toCharArray(); Arrays.sort(array); StringBuilder sb = new StringBuilder(new String(array)); // StringBuilder 역순배치 sb.reverse(); return sb.toString(); } } 처음에 버블정렬로 구현할 수 있겠다는 생각을 했지만, 코드가 길어지다보니 여러 함수를 알아보게 되었고 덕분에 비교적 짧은 코드로 구현할 수 있었습니다. 우선, S에 저장된 "Zbcdefg" ..

코딩테스트 2020.04.01