백준 2751-수 정렬하기2num을 입력받고 sort 알고리즘을 이용하여 정렬하였다.
백준 4358-생태학 문제 코드 해설 map 사용- map.count, 출력을 위한 iterator, 맵은 key 값에 의해 정렬되어 저장됨 항상 깜빡하는 소수점 출력 주의하기 EOF로 종료
백준 18870-좌표압축이 문제를 해결하기 위해 해야할 것은 정렬과 중복을 제거 하는 것이다.정렬을 해야하고 출력할 때 입력한 순서대로 좌표 압축의 값을 출력해야하기 때문에 두개의 벡터를 설정했다.중복을 제거하기 위해서는 erase와 unique를 사용하였다.그리고 좌
백준 10814-나이순 정렬class Member를 만들어 나이와 이름을 받을 수 있도록 만들었다.나이가 같으면 가입한 순서대로 출력되어야 하므로 안정정렬인 stable_sort를 사용하였다.
백준 2002-추월처음 생각한 방식은 map의 key 값에 순서, value 값에 차번호를 넣어주는 것이었다. 그래서 out배열에 들어간 순서를 저장할때 input과 일치하는 value값을 찾아야해서 for문을 한번 더 사용하였다.추월한 차를 세는 방법을 설명해 보자면
맵을 이용해서 풀었다.card.count(input)을 이용해서 이전에 입력된 값이었는지 아닌지를 판별해서 빈도수를 저장하였다.또한 출력 때도 card.count(input)를 사용해 key값이 존재하면 value값을 출력하고 key값이 존재하지 않으면 0을 출력하였다
백준 10828-스택스택의 기본을 묻는 문제이다.각 명령에 대한 함수를 만들어서 구현했다.push():split을 사용하여 띄어쓰기를 기준으로 나눈 다음 push했다.top():값을 꺼내오지 않고 스택의 가장 위에있는 값을 출력하기 위해서는 stack-1을 써주면 된다
백준 2164-카드2큐 자료구조를 사용할 수 있는 방법은 3가지로 나는 시간 복잡도가 제일 낮은 deque를 사용하였다.deque는 양방향에서 데이터를 추가, 제거할 수 있다.카드를 제거하고 옮기는 방식은 popleft()와 append()를 이용하였고 deque의 길
백준 2839-설탕배달가장 적은 자루에 담기 위해서는 5kg 자루가 최대한 많아야한다. 따라서 N을 5로 나눠서 5kg 자루를 최대한으로 만들었고,나머지를 3으로 나눌 수 있는지 판단했다.나머지를 3으로 나눌 수 없다면 5kg자루 하나를 줄이고 그 나머지를 다시 3으로
백준 1759-암호만들기백트래킹을 이용해서 풀었다.(수학적으로 해결해 보려고 했지만 실패..)1.모음, 자음 갯수 처리aeiou='a', 'e', 'i', 'o','u'을 만들어 모음 집합을 만들었다.find 함수에서 append 할 때, i 가 모음집합 aeiou에
문제 코드 해설
백준 7568-덩치사람의 몸무게, 키, 등수를 넣을 수 있는 배열을 만든다.이중 for문을 이용해 덩치를 비교하여 몸무게와 키가 모두 작을시에 배열의 덩치 등수에 +1을 해준다.
백준 15649-N과 M(1)백트래킹을 이용하여 문제를 풀었다.입력: N, M = list(map(int, input().split()))백트래킹: 백트래킹은 재귀의 방식을 이용한다.cnt가 M이 되면 출력한다.visitedi 가 False 라면 즉, i가 dq에 있지
백준 9663-N-Queen먼저 해당 문제는 Phyton3로 돌리면 시간초과가 계속 나 pypy3로 돌렸다.풀이방법1\. 백트래킹 이용2\. x값은 배열의 순서(?)와 같으므로 1차원인 리스트 사용3\. check로 대각선인 경우를 체크해줌=> (x - i == abs
백준 1932-정수 삼각형해당 문제는 다이나믹 프로그래밍을 이용해서 해결했다. 입력: 리스트에 입력값을 append 하여 넣어주었다.파이썬을 시작한 지 얼마 안되어서엔터를 치면 2차원 배열로 저장이 되는 것을 처음 알았다.다이나믹 프로그래밍 사용위에서부터 아래로 내려오
백준 11053 - 가장 긴 증가하는 부분 수열입력: arr = list(map(int, input().split()))DP이용 => 각 수마다 수열 최대길이를 배열에 저장어떤 수 이전의 수열 최대길이를 모두 비교!이때 수열의 값은 더 커야함출력: print(max(l
백준 11054 - 가장 긴 바이토닉 부분 수열해당 문제는 앞서 푼 LIS(Longest Increasing Subsequence)의 응용문제이다. 입력: arr = list(map(int, input().split()))DP이용바이토닉 수열은 증가하거나, 감소하거나,
import sysimport heapqinput = sys.stdin.readline;heap = \[]N = int(input())for \_ in range(N): num = int(input())import heapq -> heapq 이용... heapq는
백준 1715 - 카드 정렬하기카드를 합치는 횟수는 N-1 번이다.카드를 합치는데 제일 적은 카드수가 제일 많이 더해져야한다.따라서 heapq를 이용하여 제일 작은 두수를 pop해서 더해주고 그 더한 값은 다시 heap에 push했다.카드를 합치는 횟수는 cardSum
heapq를 사용했다.힙을 왼쪽, 오른쪽으로 나눠서 저장해준다.\-> left는 작은값, right는 큰값을 넣어주고 항상 right의 길이가 크거나 같도록 만들어준다.\-> 따라서 num이 입력됐을 때 right의 값들이 항상 클 수 있도록 비교해준 후에 알맞은 곳에
백준 1026-보물A에서 가장 작은수와 B에서의 가장 큰수를 곱하면 더하면 작은수가 될것이라는 아이디어로 풀었다.
백준 1339- 단어수학아이디어단어의 갯수는 최대 10개이므로 자릿수가 제일 큰 알파벳에게 제일 큰 숫자를 대입해주면 된다.같은 자릿수에 알파벳이 여러개 존재한다면 더 큰 자릿수에 더 많이 사용된 알파벳에 더 큰 숫자가 대입되어야한다.1,2를 만족시키기위해 가중치를 두
백준 1931-회의실 배정먼저 회의 시작 순서대로 정렬해준다.회의가 끝나는 시간이 tmp에 있는 끝나는 시간보다 작으면 tmp를 교체해준다.만약 회의 시작 시간이 tmp에 있는 끝나는 시간보다 크거나 같으면 cnt+1을 해주고 tmp를 교체한다.회의 시작시간과 끝나는
백준 2805 - 나무자르기이분탐색을 이용하여 값을 찾아내었다.원하는 나무길이와 정확하게 일치하는 값이 나오지 않을 수도 있다. 따라서 자른 나무길이의 합이 원하는 값 보다 클 경우, pre_mid에 mid값을 저장해준 다음 이후에 길이의 합이 모두 원하는 값보다 작을
백준 1260 - DFS와 BFSDFS, BFS 기초문제로 이들을 이용해서 해결하였다.