본문 바로가기

알고리즘

(10)
7회차 - 수열의 순환 (+) 7회차 - 수열의 순환 7회차 - 수열의 순환 1부터 시작해서 1씩 증가하다가 특정 숫자에 도달하면 다시 1로 돌아오는 수열을 순환 수열이라고 하자. 예를 들어서 5에 도달하면 다시 1로 돌아오는 순환 수열은 아래와 같다. 1, 2, 3, 4, 5, 1, 2, soobindeveloper8.tistory.com numbers 은 수열의 주기를 뜻한다. getLCM 에 numbers 를 보내고 getLCM는 1번째 수를 기준으로 그 이후 모든 수를 한번씩 for 문을 돌린다. a b 10 2 3 4 5 7 10 2 3 4 5 7 10 2 3 4 5 7 10 2 3 4 ,,, 7 getLCM ( a , b ) 는 a * b / getGCD 를 구하고, getGCD 는 a 와 b 의 나머지가 0 이 될때까지 ..
8회차 - 배열 흔들기 (+) 8회차 - 배열 흔들기 8회차 - 배열 흔들기 프로그래머 지수는 제비뽑기 프로그램을 만들고 있다. 자신이 이미 정해둔 N개의 배열에 각각 임의의 번호들을 저장해 두고 사용자들이 0~(N-1)의 정수 번호를 하나 입력하면 그 칸에 있는 숫 soobindeveloper8.tistory.com 배열 흔들기에 대해서 다시한번 이해하기 nNumbers 에 배열의 원소의 수를 저장한다. nCommands에는 처리할 명령어의 수를 저장한다. ShiftingArray 객체에 index 와 value 를 입력 받아 저장할 예정이다. ShiftingArray .set => 현재 배열에서 'index'번째에 존재하는 원소를 'value'로 변경하는 함수 ShiftingArray .set 을 이용해 배열 값을 저장한다. pu..
5회차 - 알고리즘 기록 : 두 카드 📌 두 카드 지애가 살고 있는 이상한 나라에서는 독특한 복권제도가 존재한다. 이상한 나라에서는 매 주 당첨 될 자연수 번호를 정해두며, 복권을 구매한 사람은 그 자리에서 수 많은 카드들 중 하나를 뽑을 수 있는 기회가 두 번 주어진다. 즉, 똑같은 카드를 두 번 뽑을 수 도 있다. 이렇게 두 번에 걸쳐 뽑은 카드들에 적혀있는 두 자연수를 더하여 당첨 번호로 지정된 자연수와 일치한다면 그 사람은 당첨되는 것이다. 복권 담당자인 미주는 이번 주에 복권에 사용 될 당첨 번호들을 정하려고 한다. 하지만 매 번 실제로 그 당첨번호가 두 카드에 적힌 숫자들의 합으로 만들어 질 수 있는지 (즉, 실제로 당첨될 수 있는 번호인지) 검사하는 과정이 너무 번거로워 고민을 하고 있다. 미주를 도와서 주어진 카드를 조합해 당..
4회차 - 알고리즘 기록 : 응모 📌응모 어느 한 아이돌 그룹의 팬 클럽 '아재리눅스'의 회원들은 앨범과 기념품 구매에 돈을 아끼지 않기로 유명하다. 이 아이돌 그룹의 소속사는 이번 새 2집 리패키지 앨범을 구매한 회원들을 대상으로 팬 사인회를 진행하기로 결정하였다. 예상과 같이 새 앨범은 출시와 동시에 엄청난 수량이 판매되었으며, 팬 사인회에서 수용할 수 있는 구매자의 수를 아득히 넘어섰다. 결국 모든 회원을 팬 사인회에 초청할 수 없었기에 판매 된 앨범의 시리얼 번호를 통하여 추첨을 하기로 하였다. 하지만 앨범을 구매한 모든 사람이 팬 사인회 참가가 가능한 것은 아니므로 참가를 희망하는 팬들에게 본인이 구매한 앨범의 시리얼 넘버를 통해 응모할 수 있도록 하였다. 하지만 너무나도 아이돌을 만나고 싶어하는 몇몇 삼촌 팬이 같은 시리얼 번..
4회차 - 알고리즘 기록 : 페인트 📌 페인트 한 아이돌 그룹은 2집 앨범 발매 기념 콘서트를 열기로 하였다. 이 콘서트의 기획을 맞게 된 당신은 2집 앨범의 컨셉트에 맞게 콘서트장을 알록달록하게 꾸미고자 한다. 하지만 디자인 감각이 전혀 없던 당신은 어떻게하면 예쁘고 불규칙적으로 알록달록하게 색상을 배치할 수 있을지 고민을 하고있다. 당신은 콘서트장에 한 줄로 배치 된 좌석들 중 연속된 몇 칸을 골라 한 가지 색으로 색칠하고, 또 다른 연속된 몇 칸을 골라 색칠하는 과정을 반복하기로 하였다. 처음에 모든 좌석은 하얀색(0번 색상)으로 색칠되어 있으며, 당신은 연속 된 몇 칸의 좌석을 골라서 한 가지 색으로 칠할 수 있다. 당신은 0번부터 99번까지 총 100가지 색상을 사용할 수 있다. 0번은 항상 흰색이라고 가정한다. 그러므로 가장 처..
2회차 - 알고리즘 기록 📌문제2F-데스티니 감수성이 풍부한 명은이는 매일 밤 하늘을 바라 본다. 어느 날 명은이는 태양을 중심으로 공전하는 지구와 또 그 지구를 중심으로 공전하는 달의 관계를 보며 깊은 고뇌에 빠졌다. 그 천체들은 계속 주위를 멤돌면서도 결국 일정거리 이상으로 가까워 질 수 없는 운명이기 때문이다. 명은이는 다음과 같은 생각을 하게 되었다. "지금 하늘에 떠 있는 천체들 중 서로 가장 가까이 있는 쌍은 무엇일까?" 감수성이라곤 찾아볼 수 없는, 뼛속까지 이과인 당신은 실제로 천체들간의 거리를 측정하여 가장 가까이 있는 두 천체를 명은이에게 알려주려고 한다. 가장 가까이 위치한 두 천체를 찾아보자. 입력 형식 첫 줄에는 하늘에 떠 있는 천체의 수 N이 주어진다. N은 2이상 1,000이하의 자연수이다. 그 후 총..
1회차 - 알고리즘 기록 📌문제2A-도토리 키재기 도토리 나라의 도토리들이 다니는 도토리 고등학교에서는 매 달 재미있는 이벤트를 한다. 도토리 나라에서는 다른 도토리들 보다 큰 키를 가지는 것이 큰 경쟁력 중 하나였기에, 도토리 고등학교에서는 매 달마다 그 달에 생일이 있는 도토리들 중 가장 큰 키를 가진 도토리에게 상장을 수여한다. N개의 도토리에 대한 키와 생일 정보가 주어진다. 이 때 이번 달에 생일이 있는 도토리들 중 가장 키가 큰 도토리의 키를 출력하는 프로그램을 작성하자. 입력 형식 첫 줄에는 도토리의 수를 나타내는 N이 1이상 10만 이하의 자연수로 주어진다. 두 번째 줄에는 N개의 도토리의 키가 공백으로 구분된 1이상 10억 이하의 자연수로 주어진다. 세 번째 줄에는 N개의 도토리들의 생일이 속한 달을 나타내는 1..
세 정수의 최대값 구하기 입력으로 최대값 구하기 print('세 정수의 최대 값을 구합니다.') a = int(input('a 의 값을 입력 : ')) b = int(input('b 의 값을 입력 : ')) c = int(input('c 의 값을 입력 : ')) maximum = a if b > maximum : maximum = b if c > maximum : maximum = c print(f'최대 값은 {maximum} 입니다.' ) 함수로 최대값 구하기 def max3(a, b, c) : max = a if b > max : max = b if c > max : max = c return max print(f'max3(3,2,1) = {max3(3,2,1)}')