전체 글

항공대 알고리즘 동아리 Koala 🥰
https://www.acmicpc.net/problem/13423 13423번: Three Dots 첫 번째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 다음 줄부터 차례로 T개의 테스트 케이스가 주어진다. 각각의 테스트 케이스의 첫째 줄에 점의 개수 N(3 ≤ N ≤ 1,000)이 주어 www.acmicpc.net * 한 게시글에 코드블럭 언어를 하나로 통일해야 하나봐요ㅜㅜ Swift 외 코드는 하이라이트가 정상적이지 않을 수 있습니다.. Intro 처음에는 sort를 한 뒤 nC3으로 3개 조합을 뽑고 x[0]+x[2] = 2*x[1]라는 식을 통해 검증하려 하였으나 시간 초과가 발생하였습니다. 결론적으로 sort를 사용하지 않고 nC2의 조합을 사용하여 시간 초과 문제를 해결했습니..
https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제분석 N개의 수가 주어지고, 이를 오름차순으로 정렬하는 문제이다. 입력으로는 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력으로는 둘째 줄부터의 입력들을 오름차순으로 정렬하면 된다. 예를 들어, 첫째 줄에 5가 주어지고 두번째 줄부터 차례로 3 6 9 3 6 이 주어졌다고 했을 때, 출력으로..
· Koala - 5기
1. 기초 알고리즘 스터디 문제 인증 - 매주 최소 1주차씩 인증을 하면 됩니다. - 8주차 문제를 다 풀었으면 코딩 테스트 반으로 넘어갈 수 있습니다. - 인증 방법은 카카오톡 게시판에 댓글로 "[백준 아이디] 풀은 문제 번호1, 풀은 문제 번호 2, .... " 이렇게 댓글을 작성해주시면 됩니다. - 문제 인증을 하지 않으면 활동비에서 1000원이 차감이 됩니다. 블로그 포스팅 - 매주 최소 한 문제는 팀블로그에 글을 포스팅을 해야합니다.(형식은 문제 링크 + 풀이 + 코드로 자세한 내용은 팀블로그 다른 풀이 글을 참고) - 포스팅할 문제는 자신이 풀어본 문제 아무거나 글을 쓰시면 됩니다.(다른 사람이랑 문제가 겹쳐도 상관이 없습니다.) - 인증 방법은 카카오톡 게시판에 댓글로 "[백준 아이디] 팀블..
백준 아이디 김대성 - ee1234 송수헌 - songsuheon97 이충형 - cndgud9056 박민희 - qag331 박채원 - p3c1w3 이인 - aorwn970 이지수 - wltn2814 이해찬 - cksgodl 허윤석 - ssfic3380 허태영 - gjxodud1 황재웅 - ghkdwodnd321 전영서 - wjsdudtj20 - 벌금 X 1. 문제 인증 - 하루 한 문제(미참여 -400원), 일주일에 6문제 하루 빼고 매일 인증 1주차 2주차 3주차 4주차 5주차 6주차 7주차 김대성 OOOOOO OOOOOOO OOOOOO OOOOOX OOOXXX OOOOXX XXXXXX 송수헌 OOOOOOO OOOOOOO OOOOOOO OOOOOO OOOOOOO OOOOOOO OOOOOOO 전영서 기초..
백준 아이디 강성민 - ddingmin 오범석 - oh2279 김정훈 - fanatel 김종현 - rlawhdgus 이혜인 - 2hi 박준규 - junju404 왕준호 - jun0w7 전영서 - 20wjsdudtj - 코테 스터디로 이동 장수연 - suyeonjang05 이학준 - lhj8231 강대양 - rkdeo4104 1. 문제 인증 (미인증 -1000원) 1주차 2주차 3주차 4주차 5주차 6주차 7주차 8주차 강성민 O O O O O O O O 오범석 O O O O O O O O 김정훈 O O X X O O O X 김종현 O O O O O O O O 이혜인 O O O X X X X X 박준규 O O X X X X X X 왕준호 O O O X X X X X 전영서 O O O O O O O O 장수..
🐨한국항공대 알고리즘학회 KOALA 5기 모집🐨 안녕하세요! 한국항공대학교 알고리즘 학회 KOALA 에서 이번 겨울방학에 같이 공부하실 분들을 모집합니다! 저희 학회는 프로그래밍 문제 해결 역량을 중요시 하는 현재 기업 채용 추세에 맞춰 알고리즘 스터디를 교외에서 찾을 필요 없이 우리 학교 학생들과 함께 혼자 접근하기 어려운 알고리즘을 다 같이 공부하자는 취지로 만들어졌습니다! 😀저희 학회는 이런 분들에게 추천합니다! ✔알고리즘에 관심이 있으신 분! ✔코딩 꾸준히 해야한다고 생각하는데 혼자하면 안되는 분! ✔삼성, 카카오, 네이버 등 기업 코딩 테스트에 통과하고 싶은데 정보가 없으신 분! ✔acm-icpc, 삼성 scpc 등 알고리즘 대회에 참가하고 싶은데 정보가 없거나 같이 공부할 사람이 없으신 분! ..
0. Q & A - 다른 언어로 문제를 풀어도 상관이 없나요? 문제 해설 코드가 파이썬, C++로 진행될 예정이라 C++, 파이썬 코드를 읽을 줄 아시면 상관은 없습니다. - 모의테스트는 어떻게 진행되나요? 백준 - 그룹 - 연습 기능을 사용하여 백준 문제를 제공할 예정입니다. - 면접은 어떻게 보나요? 비대면으로 진행됩니다. - 코딩테스트 스터디에 들어가고 싶은데 필요한 조건이 있을까요? 알고리즘 지식은 몰라도 시간을 많이 투자하면 되는 것이라서 상관은 없지만, 백준이나 프로그래머스 문제를 풀어보시지 않으셨으면 따라오시기 많이 힘드실 수도 있습니다. - 알고리즘 기초 스터디에 들어가고 싶은데 필요한 조건이 있을까요? 파이썬 수업을 수강하셨으면 충분하다고 생각됩니다. - 스터디 진행은 시간이 정해져 있나..
· Koala - 4기
노드 사이 가중치가 다르다는 점과 최저 택시요금을 구해야 한다는 점에서 다익스트라나 플로이드-와샬을 사용하면 되지 않을까 싶었습니다. 다익스트라보다는 플로이드-와샬이 이해도 더 잘 가고 재미있는 것 같아서 플로이드-와샬을 사용해서 풀었습니다. 풀이 방법 전체적인 틀은 플로이드-와샬 기본 코드를 사용해서 풀었습니다. 백터 전체를 INF로 초기화 한 뒤에 행과 열이 같은 인덱스일 때 0으로 채워줍니다. vector가 2차원이기 때문에 [i][0]은 시작 노드, [i][1]은 도착 노드, [i][2]는 가중치가 됩니다. dist 배열에 아래와 같이 가중치를 대입합니다. 플로이드-와샬 방법을 이용해서 1~n까지 노드 사이의 최단거리를 구합니다. 최종적으로 브루트포스 방식으로 answer를 구합니다. dist[s..
· Koala - 4기
신기하게도 백준에서 플로이드-와샬 문제를 딱 풀고 왔는데 이 문제더라구요.. 근데 여전히 플로이드 와샬이라는 것을 떠올리는 것이 조금 어려웠습니다. 일단 답을 구하기 위해 필요한 것은 출발점부터 각 지점에 이르는 최소 비용 그리고 각 지점으로부터 a,b까지 드는 비용이라고 생각했습니다. 이것을 확신하고 이해하는게 첫 번째 어려움이였고, 이 3가지 값의 합 중 가장 작은 값이 정답이라는 생각은 첫 번째 어려움을 거치니 별로 어렵지 않게 해냈습니다. from sys import maxsize def solution(n,s,a,b,fares): inf = maxsize mn=inf value_table=[[inf for i in range(n)]for _ in range(n)] for start,end,cos..
· Koala - 4기
1. 키패드의 번호와 해당 번호의 위치를 맵에 저장합니다. (Ex. '1' : (0, 0) = 키패드 "1" 은 (0,0) 좌표상에 있음.) 2. 맵에 저장된 키패드의 위치를 기반으로 거리를 구할 수 있으므로, 주어진 조건대로 충실히 구현하면 됩니다! + 엄청 쉬운 문제래서 처음에는 별 생각없이 '3과 5의 거리는 2고, 4와 5의 거리는 1이라... 이거 두 수의 절대값이 거리가 되는건가!?' 하고 무지성으로 풀다가 다칠 뻔했네요 ^__^; 파이썬 코드입니다. keypad = {} def check(numbers, hand): result = "" prevRight = '#' prevLeft = '*' for number in numbers: # print(prevLeft, prevRight, numb..
· Koala - 4기
맵 자료형을 통해 키패드의 번호마다 좌표값을 넣어 주었습니다. 전달받은 hand가 left인지 right인지 확인한 다음 handtype을 정해주었습니다. 입력받은 넘버들을 키로 사용해서 키패드의 좌표값을 얻어줬습니다. 좌표값에서 x가 0이면 맨 왼쪽이므로 왼손 2면 오른손을 사용해야 하므로 if elif로 해주었습니다 그 다음 해당 좌표값을 왼손위치와 오른손 위치에 넣어주었습니다. 만약 x가 1이라면 왼손의 위치와 오른손의 위치 거리를 비교해 준 다음 가까운 손 만약 같다면 맨 처음 입력받은 손을 이용해서 문자열을 늘려주었습니다. def solution(numbers, hand): keypad={(i+1)%11:(i%3,i//3) for i in range(11) if i!=9} lefthand=0,3..
· Koala - 4기
코드가 조금 지저분해 보이기는 하지만 오랜만에 풀이를 안 보고 문제를 풀었던 것 같습니다. 풀이 과정 문제에 오른손과 왼손의 거리가 같을 경우, 거리가 가까운 경우와 같은 거리와 관련된 조건이 있었기 때문에 거리를 구하기 위한 좌표가 필요하다고 생각했습니다. vector에 담겨 있는 번호들의 좌표를 알기 위해서 keypad라는 변수를 하나 만들어서 1~9, 0, *, #를 저장해주었습니다. 저장된 keypad의 숫자와 vector에 들어가 있는 숫자를 비교하여 vector에 담겨 있는 숫자의 좌표를 queue에 담아주었습니다. 처음 시작이 왼손의 경우 '*', 오른손의 경우 '#'이기 때문에 rx, ry, lx, ly를 아래와 같이 초기화해주었고, numbers size만큼 for문을 돌면서 숫자 하나씩..
KauKoala
Koala