분류 전체보기 176

[백준/Java] 1713번 : 후보 추천하기

🌵 문제 분석https://www.acmicpc.net/problem/1713N개의 사진틀에 추천받은 학생의 사진이 게시된다. 총 S번 추천이 이루어진 후 최종 후보가 누군지 출력하라.만약 자리가 없다면 추천 받은 횟수가 가장 적은(2명 이상이라면 추천받은지 더 오래된) 학생이 삭제되고, 그 자리에 게시된다. 이미 게시된 학생이 또 추천받으면 추천횟수 증가, 사진틀에서 삭제되면 추천횟수는 0이 됨입력 :N (사진틀 개수)S (총 추천 횟수)S개의 학생 번호🌵 구현 아이디어💡 전체 동작 설계사진틀을 List로 둔다.학생을 Student 객체로 두고 변수로 학생 번호(id), 추천 받은 횟수(cnt), 게시된지 얼마나 지났는지 나타내는 값(time)을 둔다.추천 받은 학생이 생기면 O(S)-> 추천 받..

코테 2025.02.13

[백준/Java] 5212번 : 지구 온난화

🌵 문제 분석https://www.acmicpc.net/problem/5212X와 인접한 곳에 .가 3개 이상 있으면 X가 .로 바뀐다.X과 .으로 이루어진 RxC지도가 주어질 때 바뀐 지도를 출력하라.(단 모든 X가 포함된 가장 작은 직사각형만 출력하기)입력:R CX, .로 구성된 지도🌵 구현 아이디어💡 모든 X에 대하여 인접한 곳의 .개수 구하기R, C가 최대 10이라서 모든 X에 대해 인접한 곳에 .가 몇 개 있는지 확인해도 1초 안에 탐색 가능하다.✅  탐색 방법5 3....X..X..X....예제 입력 1의 경우 5*3 격자를 (0, 0)부터 (4, 2)까지 차례로 탐색X를 만나면 상하좌우 인접한 곳에 .가 몇 개 있는지 확인(1, 1)에서 X를 발견했으므로 상하좌우를 확인하여 .의 개수..

코테 2025.02.12

[백준/Java] 10157번 : 자리배정

🌵 문제 분석https://www.acmicpc.net/problem/10157CxR 배열을 달팽이 모양과 같이 반 시계 방향으로 탐색하여 K번째가 될 때의 좌표를 출력하는 문제이다.대기 번호(K) :좌석 번호 :입력 :C (공연장 가로 길이) R (공연장 세로 길이)K (대기 번호)7 611 🌵 구현 아이디어💡 (1, 1)에서 시작하여 배열을 K-1번 순회하기(1, 1)에서 시작하여 위, 오른쪽, 아래, 왼쪽으로 배열을 K-1번 순회하면 좌석 번호를 찾을 수 있다.(좌석이 최대 1,000,000개이므로 모든 좌석을 일일이 탐색해도 1초 안에 가능하다.)7 611이 경우 위쪽으로 5번, 오른쪽으로 5번 총 10번 이동하면 된다. 좌석 번호는 (1+5, 1+5)=(6, 6) ✅ 탐색 방법(1, 1)에..

코테 2025.02.11

[백준/Java] 13164번 : 행복 유치원

🌵 문제 분석https://www.acmicpc.net/problem/13164N명의 원생을 키 순서로 줄세우고 K개의 조로 나눈다.모든 조의 (가장 큰 키)-(가장 작은 키)의 합을 최소로 할 때, 그 최소값을 구하라.입력 :N(원생의 수) K(조의 수)원생들의 키5 31 3 5 6 10 🌵 구현 아이디어💡 그리디로 풀기인접한 학생의 키차이를 모두 구해보았다.👉🏻 어디를 나눠서 조의 경계를 만들면 좋을까?👉🏻 키차이가 가장 많이 나는 두 원생의 사이를 나누기👉🏻 키차이가 가장 큰 원생들의 조를 다르게 함으로써 한 조 안의 (가장 큰 키)-(가장 작은 키)를 최소화할 수 있다.✅ 접근 방법인접한 두 학생의 키차이를 모두 구한 후그 값이 큰 순서대로 두 명의 원생의 사이를 K-1번 갈라서 ..

코테 2025.02.10

[백준/Java] 18230번 : 2xN 예쁜 타일링

🌵 문제 분석https://www.acmicpc.net/problem/18230 2xN 크기의 격자를 2x1, 2x2 타일로 채울 때얻을 수 있는 예쁨의 최댓값을 구하는 문제이다. 입력값 :N(바닥 너비) A(2x1 타일 개수) B(2x2 타일 개수)2x1 타일의 예쁨을 의미하는 정수 A개2x2 타일의 예쁨을 의미하는 정수 B개5 4 31 2 3 44 5 6 예제 1의 경우 2x5 바닥을 2x1타일 4개 (1 2 3 4), 2x2타일 3개 (4 5 6)로 채운다.아래 그림처럼 타일링해야 예쁨 정도의 최댓값을 가질 수 있다. 🌵 구현 아이디어🤔 예쁨 정도가 가장 큰 타일을 먼저 선택하기무조건 예쁨 정도가 크다고 먼저 선택하면 안 된다. 반례 : 5 5 33 3 3 3 34 3 3이 경우 2x2 타일 ..

코테 2025.02.09

[트러블슈팅] 파이썬 KeyError

⚠️ 에러플라스크 서버에서 GET 요청을 처리하는 과정에서 500 에러가 발생했다.더보기125.143.73.99 - - [08/Feb/2025 19:40:28] "GET /memos HTTP/1.1" 500 -Traceback (most recent call last):...  File "/home/ubuntu/jungle/app.py", line 31, in read_memos    memo['likes'] = int(memo['likes'])                        ^^^^^^^^^^^^^^KeyError: 'likes'✅ 해결 과정KeyError는 dictionary에 없는 key에 접근할 때 발생하는 에러이다.dictionary를 dic = {'a':1, 'b':2}로 정의했는데..

정글/프로젝트 2025.02.09

[트러블슈팅] MongoDB ECONNREFUSED 127.0.0.1:27017 에러

⚠️ 발생 에러localhost에서 플라스크 서버를 실행하고 브라우저에 접속하여 GET, POST 요청을 보냈는데 서버 에러가 발생했다.db에 데이터가 저장되고 있나 확인하려고 mongosh에 접속하려고 하니 에러가 발생했다. Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.3.8MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017 ✅ 해결 과정% brew services list실행되고 있는 서비스 목록을 확인해보니 status가 none이었다. mongodb가 실행되고 있지 않아서 커넥션을 실패한 것이다..

정글/프로젝트 2025.02.09

[백준/Java] 14247번 : 나무 자르기

🌵 문제 분석https://www.acmicpc.net/problem/14247 영선이는 n일동안 나무를 하루에 한 개씩 잘라오려고 한다.나무 n개의 처음 길이와 하루에 자라는 양이 주어질 때,영선이가 얻을 수 있는 최대 나무의 양을 구하라. 입력값 :나무 개수(n)나무 n개의 처음 길이나무들이 자라는 길이51 3 2 4 62 7 3 4 1🌵 구현 아이디어🤔 가장 빨리 자라는 나무를 먼저 베는 게 유리하다? vs 현재 길이가 긴 나무를 먼저 베는 게 유리하다?처음에는 가장 빨리 자라는 나무를 가장 빨리 베는 게 유리할 거라고 생각했다.(그냥 베어서 0이 되어도 빨리 자라니까..?라는 근거 없는 아이디어였음) 💡 가장 빨리 자라는 나무를 가장 나중에 베는 게 유리하다각 날에 자라는 나무의 길이를 나..

코테 2025.02.08

[백준/Java] 19941번 : 햄버거 분배

🌵 문제 분석식탁의 길이 N, 햄버거를 선택할 수 있는 거리 K사람(P)과 햄버거(H)의 위치가 주어진다.20 1HHPHPPHHPPHPPPHPHPHP 사람은 자신의 위치로부터 거리가 K 이하인 햄버거만 먹을 수 있다.예를 들어 K=1이면 사람은 자신과 인접한 햄버거만 먹을 수 있다.햄버거를 먹을 수 있는 사람의 최대 수를 구하라.🌵 구현 아이디어💡 그리디 알고리즘1. 최대한 멀리 있는 햄버거 고르기햄버거를 최대한 많은 사람이 먹으려면 한 사람이 햄버거를 고를 때 본인이 닿을 수 있는 거리 중 최대한 멀리 있는 햄버거를 골라야 한다는 아이디어를 떠올렸다. 2. 왼쪽에 있는 햄버거부터 고르기왼쪽 맨 앞에 있는 햄버거부터 차례로 선택해야 뒤에 있는 사람이 햄버거를 먹을 수 있는 기회가 늘어난다. 예제 입..

코테 2025.02.07

[백준/Java] 2529번 : 부등호

문제 분석https://www.acmicpc.net/problem/25290~9의 숫자를 한 번씩만 사용하여 길이가 k+1인 숫자열을 만든다.이때 부등호 관계를 만족해야 한다.숫자열의 최댓값과 최솟값은?구현 아이디어0~9의 숫자를 하나씩 골라서 숫자 조합을 만들어야 함 -> 브루트 포스 숫자 탐색 방법 -> dfs 재귀탐색 사용탐색 중 해당 경로가 부등호를 만족하는지 확인 -> 백트래킹 0~9를 반복 탐색 (dfs) 숫자를 하나 고르고, 고른 숫자를 방문처리함재귀 탐색으로 다음 숫자를 고름이미 방문처리된 숫자 제외한 나머지 숫자 중에 하나 고르기수열이 부등호를 만족하는지 확인만족하는 경우에만 재귀 탐색으로 다음 숫자 고르기(백트래킹)위 과정을 반복깊이가 k가 될 때까지 반복하면 길이가 k+1인 수열이 ..

코테 2025.02.06