Algorithm/📖Baekjoon138 #1302 베스트셀러 # 문제 # 입력 및 출력 # 풀이 map을 쓰면 편할 것 같아서 map을 썼다 근데 map은 기본적으로 key 값을 중심으로 오름차순 정렬된다 value 값에 책이 얼마나 팔렸는지 수량을 저장하려고 하다보니 책이 많이 팔린 순서대로 정렬되는 것이 아니고 책 이름의 알파벳 순으로 정렬되었다 따라서 입력 받을 때 가장 많이 팔린 책 개수를 저장해두고 알파벳 순으로 정렬된 map을 하나씩 읽으면서 가장 많이 팔린 책 개수 변수와 value 값이 일치하면 출력하고 종료하도록 했음 어처피 책 한권만 출력해야하기 때문에 한 번 출력하면 바로 종료하면 됨 #include #include #include using namespace std; map m; int main() { int n, max = 0; cin >>.. 2022. 7. 24. #14501 퇴사 # 문제 # 입력 및 출력 # 풀이 어떻게 풀까 고민하다가 2차원 배열을 생각했다 스케줄 배열을 하나 만들어서 1일부터 N일까지 각각의 상담을 진행하고 상담을 완료한 날 받는 비용을 저장하도록 했다 예제 입력 1번을 예로 들면 아래 사진처럼 sch 배열에 금액이 저장된다 1일에 예약된 상담은 3일 째에 상담을 완료하고 비용을 받아 배열의 [1][3] 인덱스에 상담 금액인 10이 저장됨 6, 7일에 예약된 상담은 퇴사일을 넘어가기 때문에 비용을 받지 못해 sch 배열에 저장되지 못함 처음에 풀었던 방식이 아래 코든데 내가 다시 봐도 뭔가 이상하다 #include #include using namespace std; int T[16], P[16], dp[16], sch[16][16]; int main() {.. 2022. 7. 22. #24479 알고리즘 수업 - 깊이 우선 탐색 1 # 문제 # 입력 및 출력 # 풀이 문제 첫 부분에서 무방향 그래프라고 적혀있는데 입력 부분엔 양방향 간선이라고 적혀있다 아마 위의 슈도 코드는 무방향 그래프라고 가정하는 것 같고 실제 문제는 양방향으로 풀라는 소리같다 이거 때문에 좀 똑같은 bfs 문제도 헤맸다 일단 평소대로 재귀로 풀려고 했는데 시간초과가 뜨더라 그래서 stack을 사용해서 풀어보기로했다 stack이 후입선출인것을 까먹고 큐처럼 생각하다가 아래 블로그를 읽고 해결했다 https://lemidia.github.io/algorithm/DFS-Implementation-stack/ 깊이우선탐색(DFS) 구현 - Iterative using stack 스택을 이용한 깊이우선탐색을 이해하고 자바로 이를 구현 해본다. lemidia.github.. 2022. 7. 17. #1914 하노이 탑 # 문제 # 입력 및 출력 # 풀이 저번에 하노이 탑 문제를 풀었을 땐 하노이탑 유형 자체를 이해하기 위해 다른 사람 블로그를 참고해서 풀었었는데 이번엔 혼자 풀어보기 위해 안보고 풀어봤다 하노이탑 자체는 매우 쉬운데 이 문제에서 어려웠던 부분은 옮긴횟수 k를 구하는 부분이다 비트 연산자를 사용하려고 했는데 long long 이라도 64비트밖에 표현이 안돼서 N이 특정 수 이상 넘어가면 비트가 잘려서 출력이 됐다 옮긴횟수 k = 2^n - 1 그래서 string을 사용하려고 했다 cmath헤더의 pow함수를 사용해서 2^n을 구하고 이것을 string으로 바꿔주었다 pow는 실수형을 리턴하기 때문에 뒤에 필요없는 소수점이 존재한다 따라서 소수점 부분을 잘라주기 위해 string 헤더의 find함수와 st.. 2022. 7. 11. #1543 문서 검색 # 문제 # 입력 및 출력 # 풀이 string의 find 함수를 사용해서 문자열을 찾는다 str.find("찾는 문자")를 통해 str에서 찾는 문자가 몇 번째 인덱스에 있는지를 리턴해준다 중복되지 않게 찾아야하기 때문에 str.find("찾는 문자", 찾기 시작할 위치)를 사용하고 찾기 시작할 위치를 (앞에서부터 조회해 처음 찾는 문자를 발견한 인덱스 + 찾는 문자 길이)로 설정해준다 #include #include using namespace std; int main() { string doc, word; getline(cin, doc); getline(cin, word); int pos = word.size()*(-1), cnt = 0; while (1) { pos = doc.find(word, .. 2022. 6. 30. #2193 이친수 # 문제 # 입력 및 출력 # 풀이 dp[i]의 이친수는 dp[i-1]자리 이친수에 '0'을 붙이거나, dp[i-2]자리 이친수에 '01'을 붙인 수가 된다 따라서 점화식은 dp[i] = dp[i-1] + dp[i-2] #include using namespace std; long long dp[91] = { 0,1,1, }; int main() { int N; cin >> N; for (int i = 3; i 2022. 6. 29. 이전 1 ··· 3 4 5 6 7 8 9 ··· 23 다음