일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 시간복잡도
- C
- LoB
- 백준
- Stack
- 미로 탐색 알고리즘
- 재귀
- Java
- level13
- PHP
- 정렬 알고리즘
- 큐
- OSI
- War Game
- 스택
- 암호수학
- ftz
- 파일 시스템
- 두근두근 자료구조
- System
- pwnable.kr
- 자료구조
- HTML
- SWiFT
- ftz level13
- web
- windosws wbcs
- c언어
- 파이썬
- windosw 문자열
- Today
- Total
목록Programming (113)
나의 기록, 현진록
https://school.programmers.co.kr/learn/courses/30/lessons/774861. 문제이해판매원이 칫솔을 판매하면 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망판매원 마다 얼마의 수익을 가지는지 구하기모든 판매원은 칫솔 판매로 발생하는 이익의 10%를 자신을 조직에 참여시킨 추천인에게 배분하고 나머지를 가짐10%를 계산할 때 1원 미만은 무시칫솔 개당 100원2. 설계조직 최상위인 center 를 제외한 모든 판매원은 부모 관계를 가짐모든 판매원은 수수료를 부모에게 배분해야 함판매 집계 데이터 요소마다 center까지 도달하며 수익을 배분하기3. 코드func solution(_ enroll:[String], _ referral:[String], _ seller:[..
https://www.acmicpc.net/problem/24581. 문제이해키가 모두 다른 N명의 학생 중 자신의 키가 몇 번째인지 알 수 있는 학생의 수 구하기2. 접근방법X 노드에서 출발하거나, 다른 노드에서 X 노드에 도착하는 것이 모든 노드에 대해 가능할 때 자신의 키가 몇 번째인지 알 수 있는 학생이다.플로이드 워셜모든 지점에서 다른 모든 지점까지 최단 경로 구할 수 있음이 문제는 거리를 구하는 것이 아닌 도달이 가능한지만 구하면 됨자신의 키가 몇 번째인지 알 수 있는 학생 == 모든 노드에 접근 가능한 노드3. 코드func solution(){ var input = readLine()!.split(separator: " ").map{Int(String($0))!} let N = i..
https://www.acmicpc.net/problem/44851. 문제이해“젤다의 전설” 게임에서 화폐 단위는 루피간혹 “도둑루피”라 불리는 루피도 존재하는데, 이걸 획득하면 소지한 루피가 감소하게 된다주인공은 N x N 동굴에서 제일 왼쪽 위(map[0][0])에서 시작해서 제일 오른쪽 아래 칸인 map[N-1][N-1]까지 이동해야 하며, 한 번에 상하좌우 한칸씩 이동할 수 있다.모든 칸에 도둑루피가 존재하며 시작점부터 도착점까지 잃는 금액을 최소로 하여 이동하려고 할 때 링크가 잃을 수 밖에 없는 최소 금액을 구하라케이스마다 N과 N x N만큼의 동굴에 있는 도둑루피가 주어짐2. 설계동굴 크기와 같은 최단경로 테이블 result를 최댓값으로 초기화시작점 result[0][0]을 동굴의 시작점으로..
https://www.acmicpc.net/problem/11657 1. 문제이해한 도시에서 출발하여 다른 도시에 도착하는 버스가 있다.N개의 도시(노드), M개의 버스(간선)입력 형태는 A, B, CA는 시작 도시, B는 도착 도시, C는 버스를 타고 이동하는데 걸리는 시간C는 양수가 아닌 음수일 수도 있다.(타임머신)1번 도시에서 출발해서 나머지 도시로 가는 가장 빠른 시간을 구하자 - 요구 출력만약 1번 도시에서 출발해 어떤 도시로 가는 과정에서 시간을 무한히 오래 전으로 되돌릴 수 있다면 -1 출력 (음의 사이클)1번 도시에서 출발해서 모든 나머지 도시마다 가장 빠른 시간을 출력하되 해당 도시로 가는 경로가 없다면 -1 출력 2. 접근방법가중치에 음수가 있으므로 밸만-포드 알고리즘 사용하기밸만-..
https://www.acmicpc.net/problem/17825 1. 문제이해시작 칸에 말 4개말은 화살표 방향대로만 이동 가능말이 파란색 칸에서 이동을 시작할 경우에는 파란색 화살표로만 이동 가능A 말이 주사위 값 만큼 이동해야 할 곳에 다른 말이 있다면 A 말은 이동 불가, 도착점일 경우엔 상관 없음말이 이동을 마칠 때마다 칸에 적혀있는 수가 점수에 추가됨게임은 총 10개의 턴(10개의 주사위)만큼 이루어지고, 입력으로 주사위에서 나올 수 10개가 주어짐얻을 수 있는 점수의 최댓값을 구하라. 2. 접근방법입력으로 발판에 대한 입력이 주어지지 않아 발판에 대한 구조를 설계해야 함배열 형식에서의 최댓값을 구하라 = dfs, 완전탐색, 백트래킹어떠한 자료구조로 말이 이동하도록 할 것인가?중복된 점수가..
https://www.acmicpc.net/problem/2116 1. 문제이해마주 보는 면에 적힌 숫자의 합이 반드시 7이 되는 것이 아닌 주사위주사위를 아래에서부터 위로 쌓기주사위 쌓기 규칙은 다음과 같다서로 붙어 있는 주사위가 아래에 있는 주사위의 윗면 숫자와 위에 있는 주사위의 아랫면 숫자가 일치해야 한다.1번 주사위는 마음대로 놓을 수 있다.주사위의 윗면과 아랫면은 고정하고 회전 시킬 수 있다.주사위 쌓기 규칙을 준수하며 최종적으로 긴 사각 기둥이 되도록 주사위를 쌓았을 때 총 네 개의 옆면 중 어느 한면의 숫자의 합의 최댓값을 구하기 2. 접근방법숫자 배열 → 전개도 → 주사위 추상화마주 보는 면의 쌍 구하기[A, F] → [0, 5][B, D] → [1, 3][C, E] → [2, 4]주사위..
https://www.acmicpc.net/problem/17182 1. 문제이해행성 간 이동에 걸리는 시간이 2차원 행렬로 주어진다.planet[ i ][ j ]은 i 행성에서 j 행성까지 이동하는데 걸리는 시간이다.이미 방문한 행성도 다시 방문 가능출발은 K 행성부터 시작한다.모든 행성을 탐사하는데 걸리는 최소 시간 구하기2. 접근방법이미 방문한 행성도 다시 방문이 가능하기 때문에 A → B 보다 A → ? → B로 가는 경로가 더 가까울 수 있다.planet[i][j]는 i → j 로 직접 가는 시간이 아닌 i → j 로 갈 때 최소 시간이 저장되도록 플로이드 워셜 알고리즘 사용planet[i][j]에 각 행성마다 이동하는 최소 시간이 저장되어 있다면 이미 방문한 행성은 방문하지 않도록 dfs+백..
https://www.acmicpc.net/problem/7569 1. 문제이해M: 상자의 가로, N: 상자의 세로, H: 상자 갯수3차원 배열 형태의 토마토 상자익은 토마토 주변에 있는 토마토는 하루가 지나면 익은 토마토가 된다.주변의 범위는 토마토의 앞, 뒤, 좌, 우 그리고 위에 있는 상자와 아래에 있는 상자에 대한 토마토 총 6방향모든 토마토가 익기 위해서 며칠 걸리는지 구하기 2. 접근방법일반적인 BFS에서 윗 상자와 아랫 상자에 있는 토마토의 경우가 추가 됨예시)0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 0 00 0 0 0 0 → 0 0 1 0 00 0 1 0 0 0 1 1 1 0 토마토는 3차원 배열이지만 2차원 배열 만들어서..
https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 문제 이해한 심사대에서는 한명만 심사 가능가장 앞에서 서 있는 사람은 비어 있는 심사대로 가서 심사를 받을 수 있다.더 빨리 끝나는 심사대가 있으면 기다렸다가 그곳으로 가서 심사 받을 수 있다.모든 사람이 심사를 받는데 걸리는 최소 시간을 구하라.2. 설계입국심사를 기다리는 사람은 1명 이상 1,000,000,000명 이하각 심사관이 한 명을 심사하는데 걸리는 시간은 1분 이상 1,000,000,000분 이하이분탐색이분탐색은 기준 값(mi..
1. 문제 이해(이긴게임 / 게임횟수) * 100 = 승률승률이 변하는 최소 게임 횟수를 구하라.앞으로 모든 게임에서 승리승률이 변한다 == 승률이 높아진다승률이 변하는 높아지는 최소 게임 횟수를 구하라.2. 설계X : 게임횟수Y : 이긴 게임( (이긴게임+N) / (게임횟수+N) ) * 100 = 승률 → ( (Y+N) / (X+N) ) * 100 = 승률조건1부터 10억까지 순서대로 연산은 시간 초과이분탐색으로 최소 게임 횟수 구하기3. 코드( (Y+N) / (X+N) ) * 100 밑줄 친 부분이 실수가 됨실수에서의 곱하기 연산 시 부동소수점 오류 발생수정 → ( (Y+N) * 100 ) / (X+N)예시) 0.99 * 100보단 9900/100가 안전0.9899999999…, 0.333333333..