목록알고리즘 (30)
처음부터 차근차근
문제 https://www.acmicpc.net/problem/4344 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net 문제 읽으면서 뼈맞았다ㅋㅋㅋ 내 풀이 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { int num, arr_num, sum, st_num; int[] arr; double avg; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)..
문제 https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 내 풀이 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { int num, max = -1000000, min = 1000000; int[] arr; BufferedReader br = new Bu..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bEtk8O/btrN5wRqHPs/loPV1pVYQmLe4wBl9aeOgk/img.png)
문제 https://www.acmicpc.net/problem/2018 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 입력된 수를 연속된 수들의 합으로 나타낼 수 있는 가짓수를 출력하는 문제이다. 이 문제 에선 투포인터 알고리즘이 들어간다. 입력된 수가 7일 때 1 ~ 7까지의 숫자를 순서대로 놓는다. start index와 end index를 각각 1로 두고, count = 1 // 연속된 수들의 합으로 나타낼 수 있는 가짓수 sum = 1 // 수들의 합 으로 둔다. count를 1..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/V7H2s/btrzkx3YURy/IXrkpQYCuAQESgS9ADdsTk/img.png)
DSDV 알고리즘 Distance-Sequenced Distance Vector routing 목적지에 도달하는데 소요되는 홉(hop)의 개수가 가장 적은 방향을 선택하는 알고리즘이다. 모든 노드는 주기적으로 이웃 노드들에게 자신의 테이블 정보를 알린다. 테이블 정보를 수신한 노드들은 목적지 주소와 홉의 개수들을 보고 자신의 테이블의 갱신한다. (A에서 시작) Destination Next hop Hops count A A 0 B B 1 C B 2 D D 1 E E 1 F F 1 Link State 알고리즘 노드 간 링크 상태(역량, 지연, 비용 등)의 관계를 고려하여 경로를 선택하는 알고리즘이다. 홉의 개수보다 링크의 상태에 우선순위를 둔다. 현재 위치에서 갈 수 있는 가장 작은 비용 소요 노드를 하나..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d0klR3/btrwZWGNoJR/5XQW0pdlGcPFEVjARot07K/img.png)
달팽이 배열은 아래의 이미지 처럼 달팽이 집 처럼 생긴 배열을 말한다. 아래와 같이 값을 저장해주는 알고리즘을 구현해봤다. 문제 분석 1. 2차원 배열 선언 = A(5, 5) = A(R, C) = A(행, 열) 2. V=0, count=5, C=0, R=1, PlusMinus=1 V : 배열에 넣을 값, count : 반복문, 조건문에 사용될 변수, C : 열, R : 행, PlusMinus : 증, 감 결정하는 변수 3. 1 ~ 25까지 V = V + 1(1씩 증가) 나중에 A(R, C) 배열에다 V 값 저장 4. 진행 방향(달팽이 모양) = 1행(가로) -> 2행(세로) -> 3행 -> 4행 -> 5행(가로) -> 4행(세로) -> 3행 -> 2행(가로) -> 3행(세로) -> 4행(가로) -> ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YurIK/btrgC5LzaSn/k2Z0wkZmKOY47cMeeo80fK/img.png)
FIFO(FCFS) 풀이 : FCFS방식이므로 들어온 순서대로 트랙을 검색한다. 첫 번째는 10, 두 번째는 20, 세 번째는 50, 네 번째는 100, 다섯 번째는 80, 여섯 번째는 70, 일곱 번째는 60, 여덟 번째는 30, 아홉 번째는 40, 열 번째는 90 순서로 접근된다. 최종거리는 20 + 10 + 30 + 50 + 20 + 10 + 10 + 30 + 10 + 50 해서 240이 나온다. 답 : 접근 순서 = 10 → 20 → 50 → 100 → 80 → 70 → 60 → 30 → 40 → 90 최종거리 = 240 SSTF 풀이 : SSTF방식이므로 현재 헤더에서 제일 가까운 트랙을 고른다. 현재 헤더가 30이므로 제일 가까운 트랙이면서 현재 헤더 위치인 30을 먼저 접근한다. 그 다음 3..