본문 바로가기

공부/백준40

[백준] 5566번 문제출처: https://www.acmicpc.net/problem/5566 5566번: 주사위 게임 상근이는 혼자 보드 게임을 하고 있다. 이 보드 게임의 보드는 N칸으로 이루어져 있고, 출발점은 1칸, 도착점은 N칸이다. 각 칸에는 지시 사항이 적혀있다. 지시 사항은 말을 얼만큼 이동해야 하 www.acmicpc.net 이리저리 할게 많으니 머리가 아파서 잠시 쉬어가고자 푼 브론즈 단계 문제다. 내가 '칸'에 대한 공포가 있어서 극복하고자 칸이 들어가는 문제를 풀었다. 물론 bfs, dfs 문제가 아닌 구현 문제지만. ​ 보드 게임의 보드는 N칸으로 이루어져 있고, 출발점은 1번째 칸, 도착점은 N번째 칸이다. 각 칸에는 얼만큼 이동해야하는지가 쓰여있다. 도착점에 다다르면 끝. 달팽이는 올라가고싶다 .. 2022. 6. 15.
[백준] 2753번 문제출처: https://www.acmicpc.net/problem/2753 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 www.acmicpc.net 단순 수학 구현 문제다. 연두가 주어졌을 때 윤년이면 1, 아니면 0을 출력한다. 윤년의 조건은 "연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때"이다. 이걸 그대로 조건문에 달아주면 된다. ​ if year%4 == 0 and (year%100 != 0 or year%400 == 0) ​ 이 조건에 부합하면 1을, 그렇지 않으면 0을 출력한다. 2022. 6. 15.
[백준] 1929번 문제출처: https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 소수 구하는 알고리즘 구현은 경험이 있기 때문에 코드를 금세 짰다. 두 수가 주어지는데, 그 두 수를 포함한 숫자 사이의 소수를 모두 출력하는 것이다. for문을 돌려서 소수로 판정나면 그 수를 print해주는 방식을 이용했다. 문제는 시간초과가 일어난다는 점이었다. 머리를 싸매다가 다른 사람들의 제출 코드도 참고하고, 인터넷에서 검색해서 찾아봤다. 이중 반복문 내에서 1과 자신을 제외한 값으로 나누어떨어지지 않는다면.. 2022. 6. 15.
[백준] 2108번 문제출처: https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 주어진 홀수개의 숫자들에 대한 산술평균, 중앙값, 최빈값, 범위를 구하는 것이었다. 다 괜찮은데 최빈값 구하는데서 발목이 잡혔다. 찾아보니 collection 에서 Counter라는 모듈을 사용하면 된다고 한다. most_common을 쓰면 최빈값을 출력할 수 있고, 최빈값은 (해당값, 빈도수) 로 나타난다. 만약 빈도수가 같으면 두 번째로 작은 값을 출력한다. ​ 2022. 6. 15.
[백준] 1010번 문제출처: https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 순열과 조합을 이용하는 문제같았다. 각 테스트 케이스에 대해 다리를 지을 수 있는 경우의 수를 출력하는 것이다. 예제를 확인해보니 순서는 고려하지 않는 것같았다. 그래서 선택 점이 같은 경우의 수는 빼줘야 했다. (중복되지 않도록.) 그래서 반복문을 만들어 순열과 "조합"의 형태를 만들어냈다. 2022. 6. 15.
[백준] 11659번 문제출처: https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 주어빈 배열의 i번째에서 j번째까지의 합을 구하는 문제이다. 더이상 따로 설명할 것없이 겉으로 보기에는 간단해보였는데 다 쓰고나니 시간초과에 걸렸다. 시간복잡도를 고려해야했다. 배열의 누적합을 구하는 경우, 배열을 모두 훑게되면 시간 복잡도가 O(N^2)으로 늘어난다. 따라서 prefix sum을 위한 배열을 하나 더 만들어주고, 거기에 누적 합을 따로 저장해둔다.. 2022. 6. 15.