일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jpa
- 구현
- leetcode 69
- siver3
- gold2
- 백엔드
- PYTHON
- error
- java
- Gold4
- LCS
- leetcode
- 프로그래머스
- 오류
- mysql
- AWS
- 배포
- spring
- 백준
- 9252
- HTML
- Kakao
- glod4
- 개념
- CSS
- Thymeleaf
- LEVEL2
- glod5
- LEVEL1
- gold5
- Today
- Total
목록algorithm (78)
이 험난한 세상에서어어~
문제 설명 구현 문제가 그렇듯이 문제를 잘 이해해야 한다. 구현 자체는 어렵지 않아도 조건을 제대로 보지 않으면 나처럼 시간을 잡아 먹을 수 있다. 1. NxN 크기의 공간에 물고기가 M 마리가 있고 아기 상어가 1마리 있다. 2. 물고기가 있는 칸에는 물고기의 크기에 상관 없이 물고기가 한 마리만 있다. 나는 이 부분에서 물고기 크기 대로 물고기가 있는 줄 알고 구현했다가 한 30분인가 헤맸다. 하... 3. 아기 상어는 상하좌우로 한 칸씩만 이동한다. 이때 이동할 때마다 1초만큼 시간이 걸린다. 4. 아기 상어는 자기보다 작거나 같은 크기의 물고기는 지나갈 수 있지만, 자기보다 작은 물고기만 먹을 수 있다. 즉, 자기와 크기가 같은 물고기는 지나갈 수만 있고 먹을 수는 없다. 5. 먹을 수 있는 물고..
문제 설명 배열을 45도로 돌리는 문제다. 문제가 상당히 길기에 백준 링크로 가서 차근차근 읽어보는 것을 추천한다. https://www.acmicpc.net/problem/17276 17276번: 배열 돌리기 각 테스트 케이스에 대해 회전 연산을 마친 후 배열의 상태를 출력한다. n줄에 걸쳐 각 줄에 n개의 정수를 공백으로 구분하여 출력한다. www.acmicpc.net 일단 푸는 방법은 문제에 설명한 것들을 그대로 구현하면 된다. 다만, 배열의 인덱스를 벗어나지 않게 조심하자! 문제 풀이 첫 번째 접근 그냥 그대로 구현하면 되는데, 시계 방향으로 돌리는 방법은 문제에 쓰여 있으니 반 시계방향으로 돌리는 방법을 설명하겠다. 1. X의 주 대각선을 가운데 행으로 옮긴다. tmp[n//2][i] = X[i..
문제 설명 n개의 파일 이름이 주어지는데, 각 확장자 명으로 파일이 몇 개나 있는지 출력하는 문제다. 만일 여러 개의 파일 확장자가 있으면 이때는 파일 확장자를 사전 순으로 정렬해서 출력한다. 문제 풀이 첫 번째 접근 일단 dic를 사용해서 각 확장자 별로 파일이 몇 개 있는지 확인을 해줘야 했다고 생각했다. 그리고 파일 확장자 명은 list나 set에 넣어서 정렬을 한 후 정렬한 확장자 별로 파일 수를 dic에서 빼면 된다고 생각했다. 아마 java로 문제를 오래 풀어서 그런 거 같은데, 파이썬 dic 정렬을 찾아보니 이것보다 더 쉬운 방법이 있어서 해당 방법으로 풀었다. 두 번째 접근 Python에서 dic를 정렬할 때는 굳이 key 값을 따로 set으로 만들어서 정렬할 필요 없이 items 함수를 ..
간단한 소개 다이나믹 프로그래밍이란 단순하게 말해서 이전에 생성한 값을 가져다가 쓰는 것을 의미한다. 예를 들어서 1과 2만을 가지고 N이라는 숫자를 만든다고 생각해보자. 이때 N이 3이라면 '1+1+1', '1+2', '2+1'이라는 경우의 수가 나올 것이다. N이 4라면 어떻게 될까. '1+1+1+1', '1+2+1', '2+1+1', '1+1+2', '2+2'이라는 경우의 수가 나온다. 이렇게 일일히 세줄 수도 있지만 N이 1억일 경우에는 그 연산의 횟수가 너무 커져 시간이 많이 걸린다. 바로 이럴 때 동적 계획을 이용하면 연산 횟수를 줄이면서 빠르게 문제를 해결할 수 있다. 위의 문제를 동적 계획으로 푸는 방법을 소개한다. N = 1 '1' -> 1개 N =2 '1+1', '2' -> 2개 N =..
문제 소개 어피치가 문자열을 압축하려고 한다. 이때 압축하여 표현한 최소의 문자열을 구하여라. 문자열 압축은 특정한 숫자 단위로 맨 앞에서부터 행한다. 예를 들어서 문자열 aabbaccc가 있다고 하자. 이때 1개로 문자열을 압축한다고 하면 2a2ba3c가 될 것이다. 즉, 압축하려는 문자열의 숫자 기준으로 잘랐을 때 해당 문자열이 얼마나 나왔는지를 확인하는 것이다. 또 다른 예를 들어 문자열 ababcdcdababcdcd가 있다고 하자. 해당 문자열을 2개 단위로 압축하면 2ab2cd2ab2cd가 될 수 있다. 그러나 해당 문자열을 4개 단위로 압축한다고 하면 2ababcdcd가 된다. 그러므로 이때가 가장 짧은 문자열이 되고 답은 9가 된다. 문제 풀이 첫 번째 접근 일단 문자열을 나눌 수 있는 최대..
문제 설명 무지가 회전판을 이용해서 먹방을 한다. 한참 먹방을 하던 도중 갑자기 네트워크 장애가 발생했다고 하자. 그렇다면 무지는 네트워크가 다시 정상화 될 때 몇 번째의 음식부터 먹어야 할까? 참고로 말하자면 효율성 테스트가 존재하는 문제다. 더 자세한 설명, https://school.programmers.co.kr/learn/courses/30/lessons/42891?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 첫 번째 접근 처음에는 그냥 큐에 넣고 돌려서 계산하는 방법을 떠올렸다. 그러나 효율성 테스트에..