전체 글

항공대 알고리즘 동아리 Koala 🥰
https://www.acmicpc.net/problem/1184 1184번: 귀농 상근이와 선영이는 도심 속의 삶에 싫증을 느꼈고, 친구 현수가 있는 시골로 농사를 지으려 내려왔다. 현수의 땅은 크기가 N×N 인 정사각형이고, 땅은 단위 정사각형 1×1로 나누어져 있다. 각 단 www.acmicpc.net 난이도 골드 1 풀이 임의의 한 점을 기준으로 분할 해준 뒤 점을 기준으로 대각선에 있는 부분의 합이 같으면 된다. 일단 한 좌표를 기준으로 분할을 한다. 가장자리를 기준으로 분할하면 크기가 0인 부분이 생기기 때문에 가장자리를 제외한다면 (N-2)^2가지 경우의 수가 있다. 그럼 다시 그 좌표를 기준으로 대각선에 있는 두 부분에서 좌표 하나를 선정해준다. 위 사진 기준으로 파란 점 4와 빨간 점 1..
https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net 문제 분석 분류 자료 구조 정렬 해시를 사용한 집합과 맵 문제 설명 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -2의62승보다 크거나 같고, 2의62승보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다..
https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net N, M = map(int, input().split()) nums = list(map(int, input().split())) left, right = 0, 1 cnt = 0 while right
문제 링크 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 접근 방법 일반적인 시뮬레이션 문제입니다. 시뮬레이션 문제는 세부사항을 잘 읽는 것이 중요하고 해당 문제에서 구현에 유의할 점을 크게 2가지로 보았습니다. 첫 번째로는 사과를 먹었을 때의 상황, 두 번째로는 움직임과 동시에 벽과의 충돌여부 검사입니다. 사과 여부에 따른 뱀 정보 최신화, 이동하는 좌표가 벽 또는 몸이라면 즉시 게임을 종료하도록 코드를 구현하였습니다. 추가적으로 N이 100이므로..
https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 문제 분석 분류 자료 구조 문자열 정렬 해시를 사용한 집합과 맵 문제 설명 김형택은 탑문고의 직원이다. 김형택은 계산대에서 계산을 하는 직원이다. 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일도 같이 하고 있다. 오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시..
[문제] [코드] [코드 풀이] 입력한 문자들을 제외한 알파벳들을 찾아야 해서 맨 첫 줄에는 알파벳 대문자 26개를 요소로 갖는 리스트 alphabet을 선언 하였다. 문자열들을 입력 받을 횟수 n을 input()을 이용하여 작성하였다. 먼저 문자열들을 a에 입력 받고 alphbet 리스트에 입력받은 알파벳을 len(a)번 리스트명.remove() 함수를 이용하여 제거하는 반복문을 작성하였다. 남은 알파벳 요소들을 아스키 코드로 변환하는 ord()함수를 이용하여 alphbet 리스트의 요소들을 숫자로 바꾸어 주었다. i + 1로 넘어가기 전 마지막 줄에 입력되지 않은 알파벳들의 합을 sum() 함수를 이용하여 구했다.
문제 요약 N개의 길이를 가진 수열에서 차가 M이상이면서 가장 작은 경우의 차를 구하는 문제 입력 N, M이 주어지고 수열이 한줄에 하나씩 입력된다 출력 M 이상인 가장 작은 차 코드 설명 sort로 크기 순으로 정렬한 후 투포인터로 앞에서부터 비교해가며 가장 작은 차를 찾는다 통상적인 투포인터와 비슷하지만 left를 0 right를 len-1로 설정했을 때에는 너무 많은 조건이 생기게 되었어서 앞에서부터 비교하는게 유리하다. 문제에 따라 left와 right를 어떻게 설정하는지가 중요한 것 같다 경우마다 최소값을 리스트에 append하고 최종적으로 최소값을 찾는 방법은 시간초과 문제를 일으킨다. 최소값만 저장해놓고 16줄처럼 비교만 하면서 더 최솟값인 경우만 저장하면 메모리도 시간도 아낄 수 있다.
https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 투 포인터 문제이다. 이는 두 숫자들의 합을 이용해서 절대값이 0에 가까운 값을 출력하는 것이다. 만약 절대값이 0이라면 반복문을 그만하고 해당 두 숫자를 출력하면 된다. 그렇지 않다면, 두 수의 합이(절대값 아님) 0보다 작은 음수 값이라면 왼쪽 인덱스 번호를 증가하고, 만약 0보다 큰 양수 값이라면 오른쪽 인덱스 번호를 감소시킨다. 그렇게 최종적으로 절대값이 ..
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 문제요약 숫자들이 주어지고, 그 사이에 연산자들을 끼워넣는다. 만들 수 있는 모든 식의 결과 값들 중 최대값과 최소값을 구한다. 식의 계산은 연산자 우선순위에 상관없이 앞에서부터 계산한다. 문제 해결 모든 연산자 조합을 체크하는 방법을 사용했다. 각 연산자를 0, 1, 2, 3에 대응하고 연산자들(+,-,*,/) 각각의 개수가 주어졌으므로..
문제 논리학 교수 양항승은 칠판에 다음과 같은 내용을 썼다. 정확하게 a개의 말은 참이다. 정확하게 b개의 말은 참이다. 정확하게 c개의 말은 참이다. ... ... ... a, b, c는 정수이다. 그리고 나서 항승이는 칠판에 작성한 내용 중에 총 몇 개가 참인지 알아내는 사람은 A+을 받는다. 입력으로 항승이가 작성한 내용에 있는 정수가 주어진다. 예를 들면, "정확하게 i개의 말은 참이다" 에서 i가 입력으로 주어진다. 항승이가 칠판에 작성한 내용이 주어졌을 때, 총 몇 개의 내용이 참인지 구해보자. 입력 첫째 줄에 항승이가 한 말의 개수 N이 주어진다. N은 1보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄에 항승이가 칠판에 작성한 내용에 있는 정수가 주어진다. 이 정수는 50보다 ..
1063 킹 https://www.acmicpc.net/problem/1063 Algorithm 킹이 움직인다. 이때 체크해야할 조건은 다음과 같다. 격자 안에서만 움직여야 한다. 돌이 있는 곳으로 움직일 경우, 돌과 함께 움직여야 한다. 이때 돌 또한 격자 안에서 움직여야 한다. 돌이 격자 밖으로 나가는 경우도 체크하되, 이때 킹이 격자 내에서 움직인다면 상관없이 움직인다 Code # 행: row, 열: col row = {'8':0, '7':1, '6':2, '5':3, '4':4, '3':5, '2':6, '1':7} col = {'A':0, 'B':1, 'C':2, 'D':3, 'E':4, 'F':5, 'G':6, 'H':7} move = {'R':(0,1), 'L':(0,-1), 'B':(1,0..
https://www.acmicpc.net/problem/2473 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 알고리즘 분류 정렬 이분 탐색 두 포인터 문제 KOI 부설 과학연구소에서는 많은 종류의 산성 용액과 알칼리성 용액을 보유하고 있다. 각 용액에는 그 용액의 특성을 나타내는 하나의 정수가 주어져있다. 산성 용액의 특성값은 1부터 1,000,000,000까지의 양의 정수로 나타내고, 알칼리성 용액의 특성값은 -1부터 -1,000,000,000까지의 음의 정수로 나타낸다. 같은 양..
KauKoala
Koala