전체 글195 #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. # Bowling 점수 계산하기 # 문제 # 입력 및 출력 # 풀이 #include #include using namespace std; ifstream fin("bowling.inp"); ofstream fout("bowling.out"); int input(int frame[10][2]) { int bonus = 0; for (int i = 0; i > frame[i][0]; if (frame[i][0] == 10)continue; fin >> frame[i][1]; } fin >> frame[9][0] >> frame[9][1]; if (frame[9][0] + frame[9][1] >= 10) fin >> bonus; return bonus; } int strike(int frame[10][2],i.. 2022. 7. 9. # 교차점 계산 # 문제 # 풀이 각각 N회 반복하는 이중 for문을 생각하면 최대 1억회 반복하게 된다 T의 범위는 나와있지 않아 T까지 포함한 시간 복잡도는 잘 모르겠지만 N이 최대 10,000이기 때문에 O(N^2) = 1억회 즉, 대략 1초 시간 제한이 따로 안나와있어서 일단 이 방법으로 해결했음 #include #include using namespace std; int first[10000]; int second[10000]; ifstream fin("cross.inp"); ofstream fout("cross.out"); int main() { int T, N, num; fin >> T; for (int i = 1; i > N; for (int j = 0; j > first[j];.. 2022. 7. 4. 이전 1 ··· 9 10 11 12 13 14 15 ··· 33 다음