📖 문제https://www.acmicpc.net/problem/20310 💡 풀이 방식• 그리디1. 입력받은 문자열 s에서 0과 1의 갯수를 세며 StringBuilder 객체로 문자열을 민든다.2. 0과 1의 갯수를 각각 절반값으로 교체한다.3. 앞에서부터 1을 없애며, 1의 갯수가 0일 때 종료한다. 0은 뒤에서부터 없애며, 0의 갯수가 0일 때 종료한다. ⇒ 그리디. 가능한 문자열 중 사전순으로 가장 빠른 것을 구한다.5. 문자열에서 남은 0과 1만을 출력한다. 💥 유의사항사전순으로 가장 빠른 것 출력하기 🔺 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051..
코테
📖 문제 https://www.acmicpc.net/problem/22233 💡 풀이 방식• Map1. Map에 (단어, 현재 단어가 쓰였는지 나타내는 숫자)를 저장한다. (1: 메모장에 남음 / 0 : 메모장에 없음)2. M개의 정보를 돌며 콤마 단위로 단어를 분리한다. 분리한 단어가 현재 단어장에 있고 쓰인 적 없는 단어(1)라면, 쓰였다고 변경하고(0) 메모장에 남은 단어 수를 -1하고 M번 결과를 출력한다. 🔺 코드1234567891011121314151617181920212223242526272829303132import java.util.*;import java.io.*; public class Main { public static void main(String[] arg..
📖 문제 https://www.acmicpc.net/problem/1863 💡 풀이 방식• 스택. 건물의 높이(y)가 달라지는 걸 확인하기 위해 스택을 활용한다. - 건물의 높이가 낮아진 경우 > 뒤에 있는 건물이 끝났다는 의미. 스택이 비지 않을 때까지 한 빌딩과 해당 빌딩과 같은 높이의 빌딩을 같은 빌딩으로 취급하며 제거- 건물의 높이가 같은 빌딩인 경우 > skip- 건물의 높이가 높아진 경우 > 스택에 push해 최고층 높이의 건물 갱신 💥 유의사항- 입력을 다 받았는데 스택에 값이 남아있다면, 건물이 남아있는 것과 마찬가지이므로 남아있는 값의 갯수만큼 하나의 건물로 취급해 건물 갯수를 센다. 🔺 코드123456789101112131415161..
📖 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 풀이 방식• 그리디1. 커서를 상하로 이동하며 알파벳을 변경할 수 있는 최솟값을 구한다.answer += Math.min(ch - 'A', 'Z' - ch + 1); 2. 연속된 알파벳 'A'가 끝나는 지점을 찾는다.int idx = i+1; while(idx 3. 좌우 이동 최소 횟수를 구한다.- (i*2) + len - idx ⇒ 오른쪽으로 갔다가 왼쪽으로 움직여 바꾸고 시작점으로 돌아간 후, 왼쪽으로 움직여 마지막 위치로 이동해서 바꾸는 경우 ㄴ (i*2)..
📖 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 풀이 방식• 재귀함수 필요 자료구조- 사람 객체 (현재 사람, 부모 객체, 수익) + 객체 내 수익 계산하는 재귀함수- 자기 자신을 key로, 부모 객체를 value로 갖는 Map 1. 자기 자신을 key로, 부모 객체를 value로 갖는 Map을 만든다.2. 해당 map에 각 판매원의 이름과 부모 객체의 정보(현재 사람, null, 0)를 저장한다.3. 각 판매원을 조직에 참여시킨 사람 이름 배열(referral)을 돌며 부모를 등록한다. 4. 판매 집계 데이터를 돌며 수익을 계산한다.5..
📖 문제 https://www.acmicpc.net/problem/20006 💡 풀이 방식• 구현, 시뮬레이션필요 자료구조- 플레이어 레벨, 이름, 방에 들어갔는지 여부 저장하는 Player 객체- 플레이어 정보 저장용 배열 . p개의 플레이어 정보를 입력받을 Player 배열을 생성한다. . p개의 플레이어 정보를 입력받는다. . 현재 i번째 플레이어가 이미 방에 배치된 플레이어가 아니고, 레벨 차이가 10 이하라면, 방에 추가한다. . 이름 순으로 정렬한 후 출려갛기 위해 플레이어 이름으로 정렬한다. . 방의 정원이 모두 찬 경우, 게임을 시작한다. / 그게 아니라면 대기를 출력한다. . 현재 i번쨰 방에 있는 플레이어 정보를 모두 출력한다. 🔺 코드12345678910111213141..
📖 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 풀이 방식• 다익스트라필요 자료구조- (도착지, 거리) 정보 저장용 인접 리스트- a,b,s에서 시작해서 각 점들까지의 최단 거리를 나타내는 배열- 다익스트라용 우선순위 큐 . a,b,s에서 시작해서 각 점들까지의 최단 거리를 나타내는 배열을 최댓값 (200 * 10만 +1)으로 설정한다.. a,b,s에서 시작해서 각 점들까지의 최단 거리를 구하는 다익스트라를 총 3번 실행한다. - 현재 번호와 연결된 점들을 지나면서, 현재 연결된 점과 다음 연결된 점까지의 거리를 더한 값이 다음 연결된 ..
📖 문제 https://www.acmicpc.net/problem/9017 💡 풀이 방식• 구현필요 자료구조- 등수 저장용 int형 배열 (ranks)- 각 팀별 인원 수 저장용 Map (cntMap)- 가장 큰 숫자의 팀 번호 저장용 int형 변수- 해당 팀의 5번째 선수 저장용 배열 (fifth)- 팀 별 최종 점수 저장용 Map (scoreMap)- 6명 이상인 팀 별로 몇 명 있는지 저장용 Map (tmpMap)- 가장 낮은 점수 저장용 int형 변수 (result)- 5번째 점수 저장용 int형 변수 (fifthScore) . N개의 등수를 입력받는다. - ranks 배열에 저장한다. - 각 팀 별 팀원 수를 cntMap에 저장한다. - 가장 큰 번호의 팀 teamN..
📖 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 풀이 방식• BFS필요 자료구조- 시추관 위치(열) 별 석유량 저장용 배열- BFS에서 석유 덩어리의 열 위치 저장용 Set (중복 제거 위해) 격자를 돌면서 방문하지 않은 1인 칸의 위치에서 BFS를 수행한다. - 석유 덩어리의 열 위치 저장용 Set을 활용한다. - 방문하지 않은 1인 칸을 방문하며, 해당 열의 위치를 Set에 저장하고, 석유 덩어리 개수를 구한다. - Set에 저장된 열 위치들에 현재 위치에서 구한 석유량을 누적해 더한다. 💥 유의사항land 배열을 그대로..