본문 바로가기

전체 글170

알고리즘 선택 트랙 [3일차] 백준 11047문제 동전0 일단 이 문제를 보았을 때는 최솟값,최댓값등 극단적인 상황을 물어보고 있기 때문에 그리디 알고리즘으로 보았다. 그럼 일단 그리디 알고리즘에 대해 간단하게 설명하겠다. 그리디 알고리즘은 상황을 극단적으로 몰고 가서 가장 간단한 해법을 도출하는 방법이다. 그럼 가장 간단한 해법을 도출해보겠다!! 1. 알고리즘 여기서 핵심이 되는 알고리즘은 바로 동전 리스트를 내림차순으로 배치하는 것이다. 즉 동전 리스트에 원소들을 큰거부터 비교를 하면서 만약 동전값과 주어진 수를 비교하는 작업을 하면 됩니다! 2. 구현 N, K = map(int,input().split()) # 입력 받기 coins = [None] * N cnt = 0 for i in range(N, 0, -1): coins[i.. 2023. 5. 25.
소수 구하기 문제 : 백준 1929번 소수 구하기 문제 이 문제를 보면서 처음 들었던 생각은 소수를 구하는 알고리즘을 생각했다. 근데 들어오는 데이터가 크기 때문에 여러 알고리즘을 비교하면서 필요한 알고리즘을 선택해야 한다고 생각했다. 먼저 데이터를 담은 리스트를 생성한다. => 데이터들 = [11,30,55,100,1000] 그리고 소수를 구하는 알고리즘을 돌아가면서 연산횟수를 각 데이터에 맞는 리스트를 생성한다. 1. 가장 비효율적인 알고리즘 for 데이터 in 데이터들: for n in range(2, 데이터 + 1): for i in range(2,n): cnt += 1 if n % i == 0: break 출력데이터.append(cnt) # 출력데이터 = [24, 159, 568, 1701, 79723] 2.덜 .. 2023. 5. 25.
알고리즘 선택 트랙 [3일차] 백준 acm 호텔 10250번 문제 오늘은 2개의 조로 나누어서 각 조마다 2일차 문제를 하나씩 잡아서 풀었다. 나는 탁승현님과 함께 acm 호텔에 대해서 풀게 됐다. 탁승현님이 네비게이터 맡게 되었고 나는 드라이버 역할 맡게 되었다. 처음 문제를 읽어봤을 때는 나누기를 통한 몫과 나머지를 이용할려고 했다. 즉 몫과 나머지를 층과 호로 나누어서 생각을 했고 다음과 같은 코드로 작성했다. n = int(input()) for _ in range(n): H,W,N = map(int,input().split()) 몫,나머지 = divmod(N,H) print(나머지*100 + 몫 + 1) 하지만 위 코드는 통과하지 못했다. 왜냐하면 만약 2 5 8이라는 데이터가 주어지면 5라는 답이 출력되기 때문이다. 즉 나.. 2023. 5. 24.
알고리즘 선택 트랙 [2일차] 1. 설탕배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. (1) 알고리즘이란? 1. 설탕 입력을 받는다. 2. 기본적으로 해당 설탕을 3개씩 봉지에 담는다. 3. (1) .. 2023. 5. 23.
알고리즘 선택 트랙과정 [1일차] 1. (김민승)이 생각하는 알고리즘 : 어떤 문제를 효율적으로 해결하기 위한 방법 여기서 "효율적으로"라는 말이 애매하게 들릴 수 있다. 그래서 그 효율적이라는 것을 우린 시간복잡도를 통해서 확인할 수 있다. 시간복잡도란 알고리즘이 걸린 시간을 표기하는 방식으로 빅오 표기법와 빅큐 표기법이 있다. 여기서 우린 빅오 표기법을 자주 사용하며 빅오 표기법으로는 이런 식으로 설계되어있다. 2. (김민승)이 생각하는 자료구조란 : 자료구조는 알고리즘을 구현하는데 필요한 도구라고 생각한다. 우리가 어떤 알고리즘이 굉장히 빠른 알고리즘이라고 부른다. 내가 생각하는 빠른 알고리즘은 주어진 데이터를 빨리 가져오는 것이 빠른 알고리즘이라고 생각한다. 즉 결국엔 알고리즘을 잘 구현하기 위해서는 데이터를 잘 가져올 수 있도록.. 2023. 5. 22.
원시타입과 참조타입 원시타입과 참조 타입 자바 스크립트의 변수 타입에는 크게 원시 타입과 참조 타입으로 나누어져 있다. 1. 원시타입 : 메모리 공간을 확보하여 독자적인 값을 저장한다. 원시타입의 종류로는 string , number, bigint , boolean, undefined, symbol 이 있다. 따라서 원시타입은 불변성을 가지게 된다. 예를 들어 다음과 같은 코드가 있다고 하자 /////////////// let a = 10 a = 5 console.log(a) /////////////// 위 코드를 실행하게 되면 5가 출력되게 된다. 위 코드를 메모리 공간에서 어떻게 작용하는 지 살펴보자 (1) let a = 10 메모리에 Number라는 타입의 10이란 값이 생성되고 식별자 a는 메모리 100의 주소를 가.. 2023. 5. 22.