일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- codeSyntaxHighlight
- 위클리 챌린지
- 옵셔널 체이닝 연산자
- 주식 가격
- 4796
- 다이내믹 프로그래밍
- Hasing
- js
- 18111
- 10162
- 2018 KAKAO BLIND RECRUITMENT
- javascript
- n^2 배열 자르기
- 없는 숫자 더하기
- 프로그래머스
- react
- 정수 삼각형
- 소수 체크
- mermaid js
- C++
- Git Convention
- 이분탐색
- 1620
- 깊이 우선 탐색
- BOJ
- colorSyntax
- 5525
- 브루트포스 알고리즘
- 숫자 문자열과 영단어
- 구간 합 구하기 4
- Today
- Total
목록전체 글 (154)
개발하는 kim-hasa
https://www.acmicpc.net/problem/18111 18111번: 마인크래프트 팀 레드시프트는 대회 준비를 하다가 지루해져서 샌드박스 게임인 ‘마인크래프트’를 켰다. 마인크래프트는 1 × 1 × 1(세로, 가로, 높이) 크기의 블록들로 이루어진 3차원 세계에서 자유롭게 www.acmicpc.net 마인크래프트에서 땅을 평탄화하기 위한 코드이다. 여러 조건을 생각했는데 , 결국은 브루트포스 돌리는 것이 가장 정확한 풀이였다. 항상 3중 포문을 쓰면서도 이게 되나 ... ? 싶은 것들은 다 되는 것 같다. 먼저 배열을 세팅하고 , 높이를 하나씩 바꿔가면서 그 높이로 평탄화 하는데 걸리는 시간을 구한다. 시간이 같다면 , 높이가 높은 것으로 구한다. #include using namespace..
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 1을 빼거나 , 3으로 나누거나 , 2로 나누는 경우로 가장 빠르게 1을 만드는 문제입니다. 반대로 생각하면 , 1에서 가장 빠르게 특정 숫자를 만든다고 생각할 수 있습니다. 1부터 시작해서 1씩 더해가면서 올라가면서 , 3의 배수이거나 2의 배수일때가 나오면 그때의 최솟값을 비교해서 최솟값을 벡터에 넣으면서 올라오는 문제입니다. 위에서 아래로만 내려가려고 생각해서 잘 풀리지 않았던거 같은데 , 생각을 반대로 돌리니까 바로 풀렸습니다. #include #include using namespace std; int..
https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 2차원 배열을 z모양으로 탐색할 때 , r행 c열을 몇번째로 탐색하는지 구하는 문제입니다. 2진수로 구하면 n의 최대 자리수는 2n입니다. 그렇게 먼저 2진수를 구할 배열을 초기화합니다. 그 이후 , 홀수번째 index는 행으로 계산하고 짝수번째 index는 열로 계산합니다. 1. 행의 숫자가 n/2보다 크다면 -> 비트에 체크하고 , 행에서 n/2를 제거하고 다음 비트로 넘어갑니다. 2..
https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 특정 숫자를 1, 2, 3 으로 더해서 만드는 문제입니다. 이전 타일 문제랑 비슷하게 , n번째 수를 만드는 것은 n - 1 번째 수에 1을 더한 경우 , n - 2 번째 수에 2를 더한 경우, n - 3 번째 수에 3을 더한 경우 3가지로 나눌 수 있습니다. 즉, n번째 수는 (n - 1) + (n - 2) + (n - 3) 가지 경우의 수가 나옵니다. #include using namespace std; int main(){ int testcase; cin >> testcase; for(in..
https://www.acmicpc.net/problem/11727 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 11726번 문제랑 같은 유형이다. 다만 타일 하나가 더 추가되었다. 역시 n-1번째와 n-2번째를 더하는 것은 맞지만 , n-2번째는 = 과 ㅁ 두 타일이 가능하므로 한번 더 더해준다. 즉, n번째는 (n - 1) + (n - 2) + (n - 2) 가지가 가능하다. #include using namespace std; int main(){ int n; cin >> n; long long int arr[1002] = {0};..
https://www.acmicpc.net/problem/11726 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 2 x n 크기의 직사각형을 1 x 2 , 2 x 1 타일로 채우는 방법의 수를 구하는 문제입니다. 2 x k 크기의 직사각형을 채우는 것은 , 1. 2 x ( k - 1 ) 크기의 직사각형에 2 x 1 짜리 타일 하나 추가하는 것과 2. 2 x ( k - 2 ) 크기의 직사각형에 1 x 2 짜리 타일 두개를 추가하는 것과 같습니다. 즉 , k번째를 채우는 방법의 수는 k - 1 과 k - 2 를 더하는 것과 같습니다..
https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 단지의 수와 단지마다 있는 아파트의 개수를 구하는 문제입니다. 가장 먼저 배열을 세팅하고 , 한칸씩 돌아가면서 아파트가 있는 곳을 찾습니다. 아파트가 있다면 , 함수에서 인접해있는 아파트(단지) 를 구합니다. 아파트의 수는 단지 내 아파트의 수가 되고 , 그 수를 모두 구한 후 다음칸을 확인하기 전에 벡터 안에 저장합니다. 모두 구한 후 , bcount의 개수는 단지의 개수를 , countAll 벡..
https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 이어져있는 부분의 갯수를 구하는 문제입니다. 먼저 , 입력을 받아서 배열을 세팅합니다. 그 이후 처음부터 한칸씩 돌려가면서 배추가 있는 곳을 구합니다. 1. 배추가 있다면 배추가 있다면 함수를 실행합니다. 이때 , 주변에 배추가 있다면 모두 0으로 만듭니다. 공간의 개수를 세는 것은 before변수로 처음에 한번만 체크하고 체크하지 않습니다. 2. 배추가 없다면 다음 칸으로 넘어갑니다. 이런식으로 모두 돌리면..
https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 바로 이전 문제와 같은 유형의 문제입니다. 최대 길이와 0 사이에서 이분탐색을 해서 나무를 최대한 적게 자르는 높이를 구하는 문제입니다. #include using namespace std; long long int arr[1000000]; int main(){ long long int n, k; cin >> n >> k; long long int maxLe..
https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 특정 랜선의 개수를 입력받고 , 원하는 만큼의 개수로 나누는데 그 나누는 최대값을 구하는 문제입니다. 1과 가장 긴 길이의 랜선 사이를 이분탐색해서 나누면 되는 문제였습니다. 다만 , 랜선의 최대 길이를 고려하지 않아서 문제가 발생하는 경우가 많았습니다. 랜선을 계산하는 문제를 long long int 처리를 해 주어서 문제를 해결했습니다. #include using ..