https://www.acmicpc.net/problem/23881 문제 분석선택 정렬을 직접 구현하는 문제이다. 선택 정렬의 가장 기본적인 원리는 가장 작은 데이터를 선택해서 앞으로 보내는 알고리즘이다.한 바퀴 돌면서 가장 작은 데이터를 찾아서 맨 앞 데이터와 교환하고, 그 다음 작은 데이터를 찾아서 그 다음 위치와 교환하는 식으로 동작한다.배열 [5, 3, 8, 4, 2]로 동작 원리를 살펴보겠다. 전체 [5, 3, 8, 4, 2] 중 가장 작은 값: 2 -> 첫 번째 값 5와 교환=> 결과 : [2, 3, 8, 4, 5] 남은 부분 [3, 8, 4, 5]에서 가장 작은 값: 3 -> 그대로 유지=> 결과 : [2, 3, 8, 4, 5] 남은 부분 [8, 4, 5]에서 가장 작은 값: 4 ->..
https://www.acmicpc.net/problem/23968 문제 분석버블 정렬로 k번째 교환되는 두 수를 구하는 문제이다.먼저, 버블 정렬의 개념을 알아야 한다. 버블 정렬의 가장 기본적인 원리는 인접한 두 개의 수를 비교하여 큰 수를 오른쪽으로 밀어내며 정렬하는 알고리즘이다. 두 개의 수를 비교하여 만약 앞에 있는 숫자가 더 크다면, 서로 교환을 시키고 이후 다시 옆칸과 비교하는 방법을 반복한다.배열 [5, 3, 8, 4, 2]로 동작 원리를 살펴보겠다. 5와 3 비교 -> 교환 -> [3, 5, 8, 4, 2]5와 8 비교 -> 그대로 -> [3, 5, 8, 4, 2]8과 4 비교 -> 교환 -> [3, 5, 4, 8, 2]8과 2 비교 -> 교환 -> [3, 5, 4, 2, 8]=> ..
https://www.acmicpc.net/problem/18110 문제 분석배열에 입력 받은 값을 넣고, 정렬배열 길이의 15% 만큼의 값을 앞뒤로 제외나머지 중간 값들의 평균 구하기 소스 코드 (⭕)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..
https://www.acmicpc.net/problem/5576 문제 분석w대학과 k대학의 점수를 담을 배열 2개를 만들고, 정렬하여 각 배열의 마지막 3개의 값의 합을 구하면 된다. 소스 코드 (⭕)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ..
2023년 3월 6일에 작성됨 https://www.acmicpc.net/problem/8979 8979번: 올림픽 입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 www.acmicpc.net 문제 분석 각 국가마다 번호, 금, 은, 동 메달의 변수는 고정이므로 구조체를 이용하여 접근해본다. 소스 코드 (⭕) #include #include struct Medal// 각 국가의 번호와 메달 수를 담을 Medal 구조체 생성 { int country; int gold; int silver; int bronze; }; int main() ..
2023년 2월 11일에 작성됨 https://www.acmicpc.net/problem/2752 2752번: 세수정렬 정수 세 개가 주어진다. 이 수는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 이 수는 모두 다르다. www.acmicpc.net 문제 분석 숫자 3개를 입력했을 때, 오름차순으로 정렬하여 출력하는 문제이다. 소스 코드 -1 (⭕) #include int main(void) { int a, b, c; scanf("%d %d %d", &a, &b, &c); if (a < b && b < c) { printf("%d %d %d", a, b, c); } else if (a < c && c < b) { printf("%d %d %d", a, c, b); } else if (b < ..
2022년 12월 14일에 작성됨 https://www.acmicpc.net/problem/1431 1431번: 시리얼 번호 첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어 www.acmicpc.net 문제 분석 n개의 시리얼 번호 문자열을 입력받고, 기준에 따라 정렬하여 출력한다. 1. 길이가 짧은 순서 2. 모든 자리수의 숫자만 더한 값이 작은 순서 3. 사전 순서 소스 코드 (⭕) import sys input = sys.stdin.readline def sum_num(x): result = 0 for i in x: if i.isdigit() == T..
2022년 11월 4일에 작성됨 https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 문제 분석 정렬하는 sort함수를 이용하여 문제에서 주어진 조건에 따라 순서를 정하여 출력한다. 소스 코드 (⭕) n = int(input()) lst = [] for i in range(n): name, kor, eng, math = list(map(str, input().split())) lst.append([name, int(kor), i..
2022년 11월 7일에 작성됨 https://www.acmicpc.net/problem/2628 2628번: 종이자르기 첫줄에는 종이의 가로와 세로의 길이가 차례로 자연수로 주어진다. 가로와 세로의 길이는 최대 100㎝이다. 둘째 줄에는 칼로 잘라야하는 점선의 개수가 주어진다. 셋째 줄부터 마지막 줄까지 한 www.acmicpc.net 문제 분석 가로와 세로의 배열을 각각 만들고, 그 안에 잘린 점선 값들을 넣어준다. 배열의 요소값들을 순서대로 빼주면 잘린 조각의 가로, 세로 길이가 된다. 소스 코드 (⭕) x, y = map(int, input().split()) gr = [x, 0] # 가로의 크기 배열 sr = [0, y] # 세로의 크기 배열 line = int(input()) for i in ..
2022년 11월 4일에 작성됨 https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 분석 수를 입력했을 때, 각 자리 수를 내림차순으로 정렬하기 수를 리스트에 넣고, 리스트에 들어있는 값을 반대로 정렬하는 방법을 이용한다. 소스 코드 (⭕) num = int(input()) # num 정수형으로 입력받음 num_list = [] # num 담을 빈 리스트 선언 for i in str(num): # 문자열 형식으로 num을 i에 대입 num_list.append(int(i)) # num의 문자 하나씩 정수로 변환하여 리스트에 추가..