Programming/Algorithm 11

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

2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 메서드를 사용해서 구현해보겠다고. 까분 흔적 package Daily; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class P2675 { public static void main(String[] args) throws IOException { Buffere..

[백준] 7568번 : 덩치 (Java)

7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 문제 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165) 라고 한다..

빅오 표기법(Big-O notation), 시간복잡도, 공간복잡도

Big-O notation : 자료구조나 알고리즘에서 성능 측정에 가장 중요한 지표 빅오 식의 규모 : O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) /* N을 입력받아 1~N의 합을 구하는 코드 */ import java.util.Scanner; public class Hap { public static void main(String[] args) { Scanner input = new Scanner(System.in); int a = input.nextInt(); int sum = 0; for (int i=1; i

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

1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 문제 : 1 새로운 숫자 : 84, 8 + 4 = 12 --> 새로운 숫자 : 42 --> 4 + 2 = 6 --> 새로운 숫자 : 26 : 연산 횟수 = 4 코드 package Step4; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class PlusC..

[백준] 팩토리얼

1. 재귀함수란? : 함수 내에서 자기 자신을(함수)를 계속적으로 호출하는 방식. 함수가 콜 되면서 최근에 자신을 부른 원래 함수가 스택에 차곡차곡 쌓이게 됨. 중요한건 처음 불려진 함수에서(스택 맨 밑에있는 메소드) return 되는 값이 최종 return 값이 된다. 2. 팩토리얼(Factorial) : 1부터 특정 정수까지의 곱한 수 3. 재귀함수를 통한 팩토리얼 풀이 package Weekly; import java.util.Scanner; public class Factorial { public static void main(String[] args) { Scanner input = new Scanner(System.in); int userInputNum = input.nextInt(); Sys..

[백준] 2434번 : 별 찍기 - 1

2438번: 별 찍기 - 1 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 www.acmicpc.net 문제 : 입력되는 숫자만큼의 별을 찍어라 자바 코드 package Step3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class PrintStars { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int count = Integer.par..

[백준] 3052번 : 나머지 (Java)

3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 문제 - 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 여러가지 풀이가 있을 수 있지만, 입력은 크게 두 가지 방법으로 나눠서 풀이를 진행해보았다. 먼저, Scanner를 이용한 방법이다. package Step5; import java.util.Arrays; import java.util...

[백준] 빠른 A+B (JAVA)

15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 빠른 입력과 출력을 위해 BufferedReader와 BufferedWriter라는 것을 사용할 때가 있다. Input Data를 몇십만, 몇백만건씩 받을 때가 있는데, 기존에 사용하던 Scanner 나 System.out.print를 사용하면 시간초과가 발생할 수 있다. 이 사실을 기반으로 좀 더 코드를 살펴보기 위해 본 포스팅을 작성해보았다. 먼저, 각 메서드의 시스템 흐름도이다. Scanner와 System.out.println의 시스템 흐름도 BufferedReader와 B..

선형 리스트 (Linear List)

-선형 리스트의 개념 선형 리스트는 데이터를 일정한 순서로 나열한 자료구조로, 순차 리스트라고도 한다. 선형 리스트는 입력 순서대로 저장하는 데이터에 적당하다. 예를 들면, 좋아하는 프로그래밍 언어 종류, 연락이 많이 온 친구 목록 등이 있다. 다양한 방법으로 구현할 수 있으나, 가장 기본적인 것은 배열(Array)을 이용하는 것이다. -선형 리스트의 원리 1. 데이터 삽입 : 빈칸 확보 -> 자리 이동 -> 데이터 삽입 예. a - b - c 선형 리스트에 d를 b와 c 사이에 삽입? -> a - b - c - * (빈칸 확보) -> a - b - * - c (자리 이동) -> a - b - d - c (데이터 삽입) 2. 데이터 삭제 : 데이터 삭제 -> 자리 이동 -> 빈칸 제거 예. a - b -..

알고리즘의 개념

-알고리즘의 개념 알고리즘이란 '어떤 문제를 해결해 가는 논리적인 과정'으로 정의할 수 있다. -자료구조와 알고리즘의 관계 자료구조와 알고리즘은 데이터와 그 데이터를 처리하는 방법의 관계라고 볼 수 있다. 밀접하고, 상호 의존적인 관계 -알고리즘 표현법 1. 일반 언어 표현 2. 순서도 표현 3. 의사코드(Pseudo Code) 표현 -알고리즘 성능 측정 1. 시간복잡도 : 알고리즘을 통해 결과값을 도출해내는 시간을 기준으로 성능을 측정하는 방법 -알고리즘 성능 표기 1. 빅-오 표기법 : O(1), O(log n), O(n), O(n log n), O(n^2), O(n^3), O(2^n) 등 * 자료구조와 효율적인 알고리즘을 공부해야 하는 이유 : 데이터가 많아질수록 효율적인 알고리즘을 사용해야 많은 ..