Programming 기초
-
[python#tip] print()의 end 옵션과 sep 옵션Programming 기초/Coding Test 2023. 7. 6. 14:44
* end 옵션 print(a,b, end ="")는 a, b를 출력하고나서 마지막을 다룬다. end 옵션을 추가하지 않았을 때의 디폴트 값은 개행문자(줄바꿈문자, \n)이다. word = "abcdef" print(word[0], word[1]) print(word[0], word[1], end="") print(word[1], word[2], end=" ") print(word[2], word[3], end=" ") ----------------------------------- a b a bb c c d * sep 옵션 print(a,b, sep = '')는 a,b 사이를 어떻게 처리할지를 묻는다. sep 옵션을 추가하지 않았을 때의 디폴트값은 띄어쓰기이다. word = "abcdef" print(..
-
[BOJ#3052번] 나머지, set함수 활용 문제Programming 기초/Coding Test 2023. 7. 2. 22:58
* 문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. s = set() for _ in range(10): s.add(int(input())%42) print(len(s)) -> 중복 제거할 때는 set함수를 활용하자. -> 리스트에서 요소 추가할 때는..
-
[BOJ#5597번,10811번] list(map(int,range())), [*range()] 등차수열 리스트 만들기, 리스트 역순 방법 세 가지Programming 기초/Coding Test 2023. 7. 2. 22:25
* 과제 안 내신 분..?(5597번 문제) X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오. 입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다. 출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다. arr=list(map(int,range(1,31))) for i in range(28): arr.remove(int(input())..
-
[BOJ#10807번] count(), list(map(int,input().split()))Programming 기초/Coding Test 2023. 6. 17. 22:54
문제 총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다. 출력 첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다. 예제 입력 11 1 4 1 2 4 2 4 2 3 4 4 2 예제 출력 3 n = int(input()) array = list(map(int,input().split())) target = int(input()) print(array.count(target))
-
[이코테 # 다이나믹 프로그래밍1] 설명 및 메모이제이션Programming 기초/Coding Test 2023. 6. 13. 23:16
* 다이나믹 프로그래밍기법 동적계획법이라고도 하며, 메모리 공간을 약간 더 사용하여 연산 속도를 비약적으로 증가시키는 방법이다. 다이나믹 프로그래밍이란 큰 문제를 작게 나누고, 같은 문제라면 한 번씩만 풀어 문제를 효율적으로 해결하는 알고리즘 기법이다. 다이나믹 프로그래밍과 분할 정복의 차이점은 다이나믹 프로그래밍은 문제들이 서로 영향을 미치고 있다는 점이다. 아래 두 조건을 만족할 때 다이나믹 프로그래밍을 사용할 수 있다. 재귀 함수를 사용하면 컴퓨터 시스템에서는 함수를 다시 호출했을 때 메모리 상에 적재되는 일련의 과정을 따라야 하므로 오버헤드가 발생할 수 있다. 따라서 재귀 함수 대신에 반복문을 사용하여 오버헤드를 줄일 수 있다. 일반적으로 반복문을 이용한 다이나믹 프로그래밍이 더 성능이 좋다. 1..
-
[Python Tip#1] input()보다 sys.stdin.readline()의 처리속도가 더 빠르다.Programming 기초/Coding Test 2023. 6. 11. 02:02
*버퍼(buffer) 표준 입출력 함수를 사용할 때, 버퍼(buffer)라는 임시 메모리 공간을 사용한다. 이전 포스팅 참고(https://operationcoding.tistory.com/34) * input() input()은 한 줄을 입력 받고 문자열로 변환한다. 입력 마지막의 줄바꿈(\n)은 포함하지 않는다. 한 글자 누를 때마다 바로바로 데이터가 버퍼에 보관된다. 개행문자(\n)가 입력되면 버퍼의 입력이 종료된 것으로 간주. input() 호출 시 프롬프트 문자열을 화면에 출력해 사용자의 입력을 기다림. 대량의 입력을 받는 경우 받고 다시 프롬프트 창을 띄우고의 과정을 반복하므로 오류 발생 가능성이 증가한다. 더 이상 받을 입력이 없을 때 수행될 경우 EOF(End of File) error를 ..
-
[이코테 # 정렬2] 기본 정렬 라이브러리를 활용한 문제들Programming 기초/Coding Test 2023. 6. 9. 23:10
* 위에서 아래로(p.178) 제한시간 : 15분 입력할 수의 개수 n(1≤ n≤ 500)을 입력받고, 정렬대상의 1이상 100,000이하의 자연수의 수를 입력받는다. # sort()함수를 사용한 풀이 n = int(input()) m = [] for i in range(n): m.append(int(input())) m.sort(reverse=True) for i in range(len(m)): print(m[i], end=" ") # 정렬을 직접 구현한 버전 n = int(input()) m = [] for i in range(n): m.append(int(input())) for i in range(n): max_index = i for j in range(i + 1, n): if m[max_ind..
-
[이코테 # 정렬1] 정렬 소스코드, 선택/삽입/퀵/계수 정렬, sorted()와 sort()의 차이Programming 기초/Coding Test 2023. 6. 9. 02:21
* 선택 정렬 시간복잡도 : O(n^2) 이전 포스팅 선택/삽입 정렬 참고 : https://operationcoding.tistory.com/45 array = [7, 5, 9, 0, 3, 1, 6, 2, 4, 8] for i in range(len(array)): min_index = i # 가장 작은 원소의 인덱스 for j in range(i + 1, len(array)): if array[min_index] > array[j]: min_index = j array[i], array[min_index] = array[min_index], array[i] # 스와프 print(array) * 삽입 정렬 시간 복잡도: 최악의 경우는O(n^2)이지만 보통 어느정도 정렬된 상태에서 삽입 정렬을 쓰기 때문..