개발노트/coding test6 [programmers 알고리즘 문제풀이] K번째 수, 완주하지 못한 선수 01. K번째 수 배열 array와 array에 영향을 주는 변수를 모아둔 commands 배열이 있다. commands 배열은 항상 원소가 3개이고 순서대로 i, j, k라는 변수이다. 먼저 commands 배열을 돌면서 원소를 하나씩 꺼내고 array를 자르는 역할을 하는 i와 j는 예를 들어 i=2, j=5라면 array[2:5]로 자르면 index 2번째를 제외하고 3,4,5로 잘리기 때문에 i에는 -1을 해주어 2,3,4,5로 잘리게 변수를 설정한다. k는 몇번째 수를 의미하기 때문에 실제 array의 index는 0부터 시작하기 때문에 -1을 해주어야 원하는 수를 찾을 수 있다. new_array 라는 변수를 설정하여 잘라진 array를 내림차순으로 정렬하고 이 새로운 배열의 k번째 수를 k_.. 2022. 1. 25. [알고리즘(algorithm) (2) Arraylist와 Linkedlist] 어떤 알고리즘을 선택해야할까? 알고리즘을 구현하는 것은 자료구조의 탐색으로부터 시작된다. 처리해야할 자료의 형태에 따라 효율적인 알고리즘을 선택해서 구현하는 것이다. 자료구조는 아래와 같이 분류된다. 자료구조 중에서도 선형구조(1:1)에 해당하는 Array와 Linkedlist에 대해 알아보자. 건물에 비유하자면, Arraylist는 아파트의 한 층이 연결되어있는 구조이고 Linkedlist는 층이 다른 여러 집들이 연결되어있는 구조이다. 아래 그림과 같이 Arraylist는 한층에 모여있는 구조이기 때문에 데이터를 조회할때는 빠르지만, 추가나 삭제를 할때에는 전체구조를 변형해야하기 때문에 느리고 어렵다. Linkedlist는 산발적으로 연결이 되어있기 때문에 데이터를 조회하려면 head에서 시작하여 연결고리를 따라가야만 값을 찾을 .. 2022. 1. 11. [BAEKJOON 알고리즘 문제풀이] 문자열 - 숫자의 합, 문자열 반복 01. 숫자의 합 첫번째 input 값으로 숫자의 길이를 입력한다. 두번째 input 값으로 숫자의 길이만큼의 수를 입력하면 list화 시킨다. 숫자의 합인 sum_num의 초기값을 0으로 설정하고, 반복문을 실행시켜 숫자의 길이만큼 list를 돌면서 모든 요소를 더한다. 02. 문자열 반복 테스트케이스의 수를 input값으로 받아 n으로 정의한다. 반복할 횟수 a와 문자열 b를 input 값으로 받아서 각각 숫자화, 문자화 시킨다. 문자열 b의 길이만큼 돌면서 ( 횟수 * 문자 ) 를 출력한다. end='' 를 사용하면 띄어쓰기가 제거되고 문자열이 한줄로 붙어서 출력된다. 번외편 ) 문자열 반복 AI 문제를 잘못이해해서 만들어버린 자동 문자열 반복 시스템이다. case_num 으로 input값을 입력하.. 2022. 1. 10. [구름 level 알고리즘 문제풀이] 뱀이 지나간 자리, 의좋은 형제 1. 뱀이 지나간 자리 열을 M으로 행을 N으로 정하여 while문을 돌때마다 열을 하나씩 줄어들게 하였고, 열의 값이 0이 되면 while이 종료된다. 한줄은 #, 다음줄은 .과 #이 차례로 반복되는 구조임으로 짝수줄의 #의 위치를 설정한 뒤 while문을 돌린다. 2. 의좋은 형제 함수를 생성한뒤 진우와 선우의 input값과 days의 input값을 int를 사용하여 숫자화 시킨다. for문을 통해 days를 돌리면 day가 짝수이고 진우의 식량값이 짝수일 때 진우의 식량을 반으로 나누어 선우에게 더한다. day가 짝수이고 진우의 식량값이 홀수일 때 진우의 식량을 반으로 나눈 나머지를 버리고 몫만 남기고 선우의 식량에는 몫만 남은 진우의 식량값과 1(홀수일때는 선우에게 하나를 더 주는 형태)을 더해준.. 2022. 1. 7. 이전 1 2 다음