일반적으로 그 크기와 관계없이 HTTP 요청은 적을수록 좋다. 큰 요청 하나를 다른 요청 여러개로 쪼개면 성능 향상을 노릴 수 있을 것도 같지만, 그렇지 않다는 뜻이다. 이는 아무리 작은 요청이라도 서버에 도달하고 응답을 받기까지의 기본적인 간격이 필요하기 때문인데, 이를 지연 시간(Latency)이라고 하며 요청 시 발생하는 서버의 최소 부하(오버헤드)와 함께 사용자 경험에 마이너스 요소로 작용한다. 야후의 성능 개선팀이 발표한 최적화 법칙에서도 요청 수의 최소화를 1번으로 꼽고 있으며, Pingdom에서 발표한 통계에 따르면 지연 시간이 3초 증가하면 방문자의 38%가 다른 곳으로 튕겨나간다. 오죽하면 아예 페이지의 HTTP 요청 횟수를 측정해 등급을 매겨주는 브라우저 확장 프로그램까지 존재할 정도다..
으로 구현한 다른 정렬: [Java+Python]삽입 정렬(Insert Sort) [Java+Python]버블 정렬(Bubble Sort) [Java+Python]선택 정렬(Selection Sort) [Java+Python]병합 정렬(Merge Sort) [Java+Python]힙 정렬(Heap Sort) [Java+Python]카운팅 정렬(Counting Sort) 퀵 정렬은 1959년 영국에서 태어난 정렬 방식이다. 직관적인 이름대로 일반적으로 비슷한 속도의 병합 정렬, 힙 정렬보다 빠른 성능을 나타내며 힙 정렬과 추가적인 메모리를 요구하지 않기 때문에 자원 이용에 이점이 있다. 다만 안정 정렬이 아니라는 단점이 있어 파이썬에서는 도입하지 않고 있다고 한다. 추가로 데이터 접근 시간이 오래 걸리는 ..
문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 풀이 자바 7 이후의 스트림 sorted() 메서드는 다음과 같이 동작한다. 기본형 자료타입 - 병합 정렬(Merge sort - O(N logN) + 안정 정렬) 그 외 - 팀 정렬(Tim Sort - 병합, 삽입 정렬 하이브리드 + 불안정 정렬) 정렬에 관해서는 따로 글을 파고 있으니까 넘어가고, 여기서 하고 싶은 말은 (당연하게도)성능이 굉장히 빠..
문제 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오. 예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다. 입력 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래..
문제 그림과 같이 9×9 격자판에 쓰인 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오. 예를 들어, 다음과 같이 81개의 수가 주어지면 이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다. 입력 첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 수가 주어진다. 주어지는 수는 100보다 작은 자연수 또는 0이다. 출력 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. 풀이 2차원 배열에 관련된 문제다. 하지만 크기가 정해진 데다 최대값 중 아무 위치나 출력하라고 했으니 가장 간단하게 첫..
문제 N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오. 입력 첫째 줄에 행렬의 크기 N과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다. 출력 첫째 줄부터 N개의 줄에 행렬 A와 B를 더한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다. 풀이 2차원 좌표계를 다루는 문제이다. 아예 문제 분류가 로 되어있을 정도. 하지만 그런 거 없이 주어진 행렬을 1차원으로 만들어 리스트에 넣어 더한 뒤 출력할 때 다시 2차원으로 매핑해주었다. 이래도 되나..? 싶은 건 보통 차원을 올리..
문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은 모든 짝수 n에 대한 골드바흐 파티션은 존재한다. 2보다 큰 짝수..
문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) 자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다. 입력의 마지막에는 0이 주어진다. 출력 각 테스트 케이스에 대해서, n보다 크고..
문제 M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 M과 N이 빈칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. 출력 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. 풀이 소수에 대한 기본 문제 중 마지막인 것으로 추정되는 문제다. 인트스트림을 이중으로 열어서 주어진 수 사이에서 소수만 골라냈다. 스트림은 for문에 비해 보기가 좋아 애정한다. import java.util.Scanner; import java.util.stream.IntStream; public class Prob1929Stream { public static void main(String[] args) { Sca..
문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다. 풀이 이전 글에 적은 문장에 덧붙여, 소인수분해에도 왕도가 없다. 해서 아무렇게나 짜도 괜찮겠지~ 하고 코드를 짜다가 세 시간 정도를 날리고 두 번 정도 코드를 근본적으로 갈아엎었다. 로직은 단순한데 시간초과에 자꾸 걸려서 일단 스트림과 리스트를 버리고, AKS 알고리즘을 구현해 보려다 실패하고, 리만 함수에 대해 읽다가 정신을 차렸다. 해서 간단하게 에라토스테네스의 체를 이용해 순회하면서 소인수가 나오면 그때그때 출력하도록 만들었다. 2부터 시작해서 더..
- Total
- Today
- Yesterday
- 중남미
- 야경
- spring
- 유럽여행
- java
- 리스트
- 면접 준비
- 스트림
- 동적계획법
- RX100M5
- 세계일주
- 남미
- 백준
- 세모
- a6000
- 알고리즘
- 칼이사
- 기술면접
- 세계여행
- BOJ
- Algorithm
- 스프링
- 지지
- 맛집
- 여행
- Backjoon
- 자바
- Python
- 유럽
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |