알고리즘

Daily/Review

[서평] Do it! 알고리즘 코딩 테스트

Do it! 알고리즘 코딩 테스트 신입 지원이든 경력 지원이든 대게 좋은 회사들은 코딩 테스트를 먼저 보게 되는데, 필자 같은 경우는 코딩 테스트를 한 번도 준비해본 적이 없기 때문에 이번 서평단 기회를 통해 책으로 공부해보면 좋겠다고 생각되었다. 또한 코딩 테스트 언어로는 파이썬이 제일 간편하고 쉽기 때문에 파이썬으로 작성된 것도 좋았다. (현재 자바 편도 출간되어 있다.) 책은 30일 완성 코스로 되어 있지만 핵심 유형과 빈출 유형을 따로 두어 3일 만에 완성할 수 있는 3일 모의고사 코스도 있다. 당장 코딩 테스트 일정을 준비해야 한다면 또 이런 집중 분석도 큰 도움이 된다고 생각한다. 개념 설명 알고리즘 문제를 풀기 전, 문제와 관련한 자료구조 등에 대한 개념이 짤막하게 설명되어있다. 배열의 특징..

CS/Algorithm

[Algorithm] 코딩 테스트 풀이 TIPs

코딩 테스트 풀이 TIPs 빅오 표기법 순위 명칭 O(1) 상수 시간(Constant time) O(logN) 로그 시간(Log time) O(N) 선형 시간 O(NlogN) 로그 선형 시간 O(N²) 이차 시간 O(N³) 삼차 시간 O(2ⁿ) 지수 시간 상수 시간에 가까울수록 성능이 좋고, 지수 시간에 가까울수록 성능이 좋지 않다. 알고리즘 설계 일반적인 기준의 컴퓨터에서 연산 횟수가 5억 회를 넘는 경우 파이썬은 5~15초가량의 시간이 소요된다. 코딩 테스트에서는 보통 1~5초 이내로 연산이 완료되어야 하므로(명시되지 않은 경우 대게 5초) 시간 복잡도를 잘 계산하고 알고리즘 설계를 작성해야 한다. 시간제한이 1초인 문제의 일반적 기준은 다음과 같다. 1. N의 범위가 500인 경우 : O(N³)인 ..

Solution/백준

[백준] 1065번: 한수

[백준] 1065번: 한수 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 내가 알고리즘을 좋아하지 않는 이유는 단순 논리 말고도 수학적 개념이 자주 나오기 때문인데... 이 나이가 되니 학생 때보다 수학 이해 속도가 좀 느려진 거 같다 허 허 허 (는 아직 20대 초반) Java 풀이 우선 양의 정수인 일의 자리 수와 십의 자리 수는 무조건 한수이다. 입력받는 숫자는 1000보다 작거나 같은 수라고 하였으니 백의 자리 수만 신경 쓰면 된다. (1000은 어차피 한수가 아니다) 1~9 사이의 일의 자리 숫자인 경..

Solution/백준

[백준/Java] 5622번: 다이얼

[백준] 5622번: 다이얼 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net 이 세계에는 다양한 하드 코딩이 존재한다.. 풀이 하드 코딩 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int sum = 0; int chr; while (true) { chr = System.in.read(); if (chr == 10) break; s..

Solution/백준

[백준/Java] 1152번: 단어의 개수

[백준] 1152번: 단어의 개수 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 풀이 import java.io.*; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new Buffe..

Solution/백준

[백준/Java] 1157번: 단어 공부

[백준] 1157번: 단어 공부 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 풀이 처음 풀었던 풀이이다. import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)..

Solution/백준

[백준] 2675번: 문자열 반복

[백준] 2675번: 문자열 반복 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net Java 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws IOE..

Solution/백준

[백준] 4673번: 셀프 넘버

[백준] 4673번: 셀프 넘버 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net Java 풀이 import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws IOException { BufferedWriter bw = new Buffered..

Solution/백준

[백준] 2577번: 숫자의 개수

[백준] 2577번: 숫자의 개수 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net Java 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new B..

Solution/백준

[백준] 1110번: 더하기 사이클

[백준] 1110번: 더하기 사이클 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net Java 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] args) throws..

Solution/백준

[백준] 10869번: 사칙연산

[백준] 10869번: 사칙연산 10869번: 사칙연산 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. www.acmicpc.net Java 풀이 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(a + b); System.out.println(a - b); System.out.println(a * b); System.out.println(a ..

Solution/백준

[백준] 1000번: A+B

[백준] 1000번: A+B 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 시간을 죽이기 위해 입출력부터 손을 댄다. 8시간은 너무나 긴 시간,, Java 풀이 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); int B = sc.nextInt(); System.out.println(A + B); } Scanner를 사용하여 풀었지만 수행 시간이 200ms이었다. 다른 사람들 제출 시간을 보니 java 8 기준 68ms..

밈아
'알고리즘' 태그의 글 목록