문제 https://www.acmicpc.net/problem/5361 문제 풀이1. 각 테스트 케이스마다 필요한 부품의 수를 split을 통해 한 줄로 입력받는다.2. 각 부품들의 가격을 개수에 곱한 후 format 함수를 통해 소수점 둘째자리까지만 출력한다.3. range함수를 통해 1과 2를 처음 입력받은 n번만큼 반복한다. Coden = int(input())sum = 0for i in range(n): a,b,c,d,e = map(float,input().split()) sum = 350.34 * a + 230.90 * b + 190.55*c + 125.30 * d + 180.90 * e print("${0:.2f}".format(sum))
분류 전체보기
문제 풀이아이디어 문제이다.천진수를 이용하여 [1,1,1,1, ..., 1000,1000,1000, ... ,1000]이라는 수열을 고안한다. (1과 1000은 각각 1000개씩 있다.)위 수열은 연속한 범위의 합으로 1,000,000까지의 모든 숫자를 만들 수 있다. 코드print(2000) arr = [1 for i in range(1000)] + [1000 for _ in range(1000)] for i in arr: print(i, end=' ')
https://www.acmicpc.net/problem/4963문제 풀이1. r과 c를 입력받기 + 0 0 을 입력받는 순간 탈출\2. arr 리스트에 섬의 상황 입력하기3. 비교를 위한 check 리스트 생성4. arr 전체를 돌며 flood_fill 함수 실행5. flood_fill 함수가 끝나면 섬 1개를 의미하므로 cnt 1 증가flood_fill 함수대각선까지 감안하여야 하므로 x,y에 더해줄 d 생성함수의 인자인 x,y에 맞는 nx, ny에 맞게 수정 -> 추가 flood_fill 실행 문제 코드def flood_fill(x, y): for i in range(len(d)): nx, ny = x + d[i][0], y + d[i][1] if 0
https://www.acmicpc.net/problem/1002문제문제풀이1. 터렛 두 개의 x, y 좌표를 비교하여 변수 선언한다2. 좌표를 비교하여 두 개의 원을 설정한다3. 중심거리와 위치의 관계를 이용하여 두 원의 접점의 개수를 구한다.코드
https://www.acmicpc.net/problem/10974문제풀이숫자 N을 입력받아 1부터 N까지의 수로 이루어진 리스트를 만든다. 그리고 순열 모듈을 통하여 리스트에 있는 수들의 순열을 구한다.소스코드from itertools import permutations as pmN = int(input())arr = [i for i in range(1, N+1)]for t in pm(arr, N): print(' '.join(map(str, t)))
문제&링크https://www.acmicpc.net/problem/1238 풀이1. 각자 마을 별로 특정 마을까지 갔다가 오는 최소 거리를 계산해야 하기에, 다익스트라 알고리즘을 사용한다.2. 시작점과 끝점 가중치가 주어져 있기에 끝점과 가중치를 pair로 하는 벡터 행렬에 시작점을 기준으로 저장한다.3. 다익스트라 함수에서 시작점과 끝점을 파라미터로 받는다.4. fill 함수를 이용해서 모든 거리를 INF로 초기화한다.5. 우선순위 큐를 활용하여 가중치가 가장 낮은 값 먼저 탐색하도록 한다. 이때 우선순위 큐는 기본적으로 max heap 이기에 가중치를 음수로 하여 저장하고, 값을 사용할 때는 -를 붙여 양수로 사용한다.6. 시작점 s의 가중치를 0으로 초기화한 후 우선순위 큐에 삽입하고, 거리 또한 ..
문제https://www.acmicpc.net/problem/17413코드#include #include #include #includeusing namespace std;int main(){ string s; getline(cin, s); int intag = 0; string ans = ""; string word = ""; for (int i = 0; i ') { ans += s[i]; intag = 0; } //숫자나 알파벳 else { if (intag == 1) { ans += s[i]; } else { word = s[i] + word; } } } ans += word; cout 알고리즘 분류 : 구현문제 해설 : 태그 안일 때는 체크해주면서 문..
0. Q & A- 다른 언어로 문제를 풀어도 되나요?문제 자료에 나오는 코드가 파이썬, C++이라 해당 코드를 읽을 줄 아시면 상관 없습니다.- 모의 테스트는 어떻게 진행되나요?백준 - 그룹 - 연습 기능을 사용하여 백준 문제를 제공할 예정입니다.- 문제는 얼마나 풀게 되는 것인가요?기초 알고리즘 스터디: 1주차 ~ 7주차는 20문제, 8주차는 14문제 이상을 풀게 됩니다.코딩테스트 준비 스터디: 일주일에 4문제 이상을 풀게 됩니다.- 모의 테스트 예시1. 알고리즘 기초 스터디대상- 본격적인 알고리즘 지식을 배우기 전에 기본적인 구현 실력을 쌓고 싶으신 분- 1학년 코딩 수업을 들으신 분들 (추천)사용 언어- Python 3계획1. 깃북 자료를 읽은 후 깃북에 나와있는 알고리즘 문제를 통해 공부를 합니다..
https://www.acmicpc.net/problem/2852문제풀이전체적인 솔루션은 점수가 나는 순간, 이전에 점수 난 시점과의 시간 차이를 계산하며, 그 동안 점수가 높았던 팀에 저장하는 식으로 진행된다. 점수가 같은 경우, 시간 차이는 필요 없으므로 계산하지 않음으로써, 연산 최적화를 수행하였다. 추가적으로 신경 쓴 포인트는 다음과 같다.마지막 시간인 48분이 입력으로 들어오지 않으므로, 하드 코딩 해주어야 한다.Iteration을 N+1로 설정해주어, 마지막 Iteration에서 input() 대신 직접 "? 48:00"을 대입한다.Winner를 의미하는 ?는 다음 Iteration에서 활용하는데, 마지막 Iteration이라 활용하지 않는다. 그래서 입력 포맷을 맞춰주기 위해 아무 값이나 넣..
https://www.acmicpc.net/problem/1940 문제재료의 수 N(1 풀이고유한 수를 정렬한 후, 이중 반복문으로 두 수를 더해서 m이 되는 경우의 수를 센다. 이때, 안쪽 루프가 i+1부터 시작하므로, n*2보다는 적은 연산을 한다.#include #include using namespace std;int n, m, arr[15010], cnt = 0;int main() { cin >> n >> m; for (int i = 0; i > arr[i]; sort(arr, arr + n); for (int i = 0; i
https://www.acmicpc.net/problem/11866알고리즘 분류구현 자료구조큐n, k = map(int, input().split())n_lst = list(range(1, n+1))ans = []i = k-1while n_lst: ans.append(n_lst.pop(i)) if i == len(n_lst): i = 0 for _ in range(k-1): i += 1 if i == len(n_lst): i = 0print('')문제풀이 1부터 n까지 들어있는 리스트가 모두 사라질때까지 반복index = i 인 수를 pop()하고 정답 리스트에 append()pop()을 통해 이후 인덱스가 1씩 줄었으므로 이후 k번째 수를 제거하기 위해 i에 ..