링크 : https://www.acmicpc.net/problem/10817 문제 설계하기(접근방법) 리스트 X 1. a, b, c를 입력받는다 2. if문을 이용해 if a>b일때 1. b > c 2. c > b else b > a b>c일때 .... 와 같은 방법 리스트O 1. a, b, c를 리스트에 입력받는다 2. sort() 메서드를 이용하여 정렬한다. 3. 리스트의 2번째로 큰 정수 = 중앙값을 출력한다 코드(출력) num_list = list(map(int, input().split())) num_list.sort() print(num_list[1]) 얻어갈 부분 1. sort() 메서드는 반환값 없이 원본 리스트를 정렬한다. 2. sorted() 메서드는 원본 리스트를 유지하고 새 리스트에..
링크 : https://www.acmicpc.net/problem/3003 문제 설계하기(접근방법) 1. 개수를 입력받는다 2. 원래 세트의 갯수에서 각각의 말 개수를 빼서 출력한다 코드(출력) k, q, l, b, n, p = list(map(int, input().split())) print(1-k, 1-q, 2-l, 2-b, 2-n, 8-p) 얻어갈 부분 1. 리스트를 선언하지 않고 풀 수 있었다
링크 : https://www.acmicpc.net/problem/2587 문제 설계하기(접근방법) 1. 리스트를 생성한다 2. 숫자를 입력받아서 리스트에 append 한다 3. 리스트를 정렬한다 4. 리스트의 평균과 중앙값을 출력한다 코드(출력) num_list = [] for i in range(5): num_list.append(int(input())) sorted_list = sorted(num_list) print(int(sum(sorted_list) / 5)) print(sorted_list[2]) 얻어갈 부분 1. sorted 함수를 사용하면 새로운 리스트에 넣어주어야 한다
1. 배열 (array) 1.1 배열(array)이란? int score1, score2, score3, score4; -> int[] score = new int[5]; 값을 저장할 수 있는 공간은 score[0]부터 score[4]까지 5개 score 자체는 값을 저장할 수 있는 공간이 아닌 참조변수임 1.2 배열의 선언과 생성 선언 방법 선언 예 타입[] 변수 이름; int[] score; String[] name; 타입 변수이름[]; int score[]; String name[] → 두 가지 방법이 있으나 ‘타입[] 변수이름’ 추천 int[] score; score = new int[5]; //이 선언 방법을 보통 아래와 같이 줄인다. int[] score = new int[5] 1.3 배열의 ..
1. 조건문 - if, switch 조건문은 조건식과 문장을 포함하는 블럭{}으로 구성되어 있으며, 조건식의 결과에 따라 실행할 문장이 달라져 프로그램의 실행흐름을 변경할 수 있다. if → 처리할 경우가 적은 경우 switch → 처리할 경우가 많은 경우 but, if문보다 제약이 많음 1.1 if문 if (조건식) { //조건식이 (true)일 때 수행될 문장들을 적는다. } 블럭{} if(score > 60) { } //OR 둘 중에 취향에 맞는 것을 사용하면 된다. if (score > 60){ } if(score > 60) System.out.println("합격입니다); // 블럭 내의 문장이 하나 뿐일 떄는 둘 중에 하나와 같이 사용 할 ㅜㅅ 있다. if(score > 60) System.o..
링크 : https://www.acmicpc.net/problem/9020 문제 설계하기(접근방법) 1. 테스트 케이스 수를 입력받는다 2. 짝수 n을 입력받는다 방법 1. n = 2k 를 2로 나눈다. k 순서쌍 (k + i, k - i)를 소수인지 아닌지 검사하며 i를 1씩 증가시킨다. 소수 순서쌍이 발견되면 반복문을 종료하고 순서쌍을 출력한다. 방법 2. 1 ~ 10000까지의 소수 리스트(primenum_list)를 만든다. n = 2k를 2로 나눈 값 k와 가장 유사한 소수값을 찾고, 리스트의 위치(primenum_list[j])도 찾는다. ex) 근사한 소수 = k + i k + i를 구했으면 k-i가 소수인지 확인한다 소수라면 출력, 아니라면 primenum_list에서의 인덱스 값을 1씩 ..
링크 : https://www.acmicpc.net/problem/4948 문제 설계하기(접근방법) 1. while문을 통해 n을 입력받는다 -> 0이 입력될 때까지 반복되기 때문이다 2. 1부터 루트 n까지의 소수를 리스트로 구한다 3. 2번의 리스트로 아리토스테네스의 체를 적용하여 n 부터 2n까지 소수인지 아닌지 검사한다. 결과 : 시간초과 이유 : 케이스마다 아리토스테네스의 체를 거친 소수를 구하는 것은 시간낭비이다 해결방법 -> 리스트를 미리 만들어놓자 1. 먼저 1 ~ 246912(123456 * 2)의 루트까지 소수를 구한다. 2. 1번의 리스트로 1 ~ 246912까지 체로 걸러 그 중 소수만 리스트에 적용한다 3. while문을 선언하고, 테스트 케이스마다 fianl_primenum을 순..
링크 : https://www.acmicpc.net/problem/1929 문제 설계하기(접근방법) 1. m, n을 입력받는다 2. 기존의 방식으로 소수를 구하면 시간을 초과할 것이다. 방법 1. 검사할 때 n의 루트까지만 검사한다 방법 2. m ~ n을 1 ~ n 전부 순회하며 소수인지 아닌지 판별하면 낭비일 것이다. n의 루트까지의 소수 리스트를 미리 만들면 소수의 개수 만큼만 순회하면 된다. 코드(출력) m, n = map(int, input().split()) # 10 40 prime_end = int(n ** (1/2)) # 소수 검사할 때, n의 루트까지만 순회하면 된다 # 6 def find_primenumber(num): # 소수를 구하는 메서드 if (num == 1): return 0 ..