목록2023/09 (15)
코디잉
https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net ⭐ List와 Set의 contains() 시간복잡도 ⭐ ArrayList, LinkedList : O(n) HashSet : O(1) 접근 방식) 1. set에 문자열 추가 2. M만큼 돌면서 contains() 로 set에 문자열 있는지 확인하고, 있으면 answer++ import java.io.BufferedReader; import java.io.IOExc..
https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 접근 방식) 두 가지 방식으로 풀었다. 1) HashMap 1개 사용 → 그냥 HashMap 만들어서 포켓몬 넣을 때마다 map.put(이름, 번호), map.put(번호, 이름) 해서 풀이 2) HashMap 2개 사용 → key를 이름으로 갖는, 번호로 갖는 HashMap을 각각 2개 만들어서 풀이 1) HashMap 만들어서 포켓몬 넣을 때마다 map.put(이름..
https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방식) 완전탐색: 만들 수 있는 모든 명함의 크기 중 제일 큰 걸 찾으면 된다. 명함의 가로 중 제일 긴 거, 세로 중 제일 긴 거를 찾아서 곱하면 된다. 하지만 주의할 점은 명함을 회전시켜, 가로와 세로를 바꿀 수 있다는 점이다. 그래서, 명함의 긴 부분을 가로, 짧은 부분을 세로로 하기로 정했다. 가로 = 명함의 두 값 중 큰 값세로 = 명함의 두 값 중 작은 값 우리에게 주어진 size..

https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방식) BFS 1. 2차원 배열인 map을 상하좌우로 움직일거니까 static int[] dx, int[] dy 생성 움직인 거리 표시해줄 2차원 배열 static int visited[][] 생성 → -1로 초기화해서 도착했든 못했든 상관 없이 -1 or 칸의 개수 최솟값 return 되게끔 2. BFS수행: 상하좌우 돌면서 map의 x, y에 벗어나지 않고, 방문하지 않았으면 큐에 추가하고..
https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 접근 방식) Queue에 다 넣어서 빼고 뒤에 넣고 하려고 했더니, "나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한다." 그래서 프린터 대기열을 위한 일반 Queue와 우선순위 확인을 위한 PriorityQueue를 함께 사용하려고 한다..! 그리고 편의를 위해 문서Document 클..
https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 접근방식) ▶ 문자열로 받아서 char 배열 오름차순 정렬 수행 그리고 StringBuilder에 저장한다. 방법1) 그냥 저장한다음 sb.reverse() 로 뒤집기 방법2) sb.insert(0, 문자열) 로 순서대로 앞에 넣기 ▶ 방법3) List에 저장해서, Collections.sort(list 이름, Collections.reverseOrder()) 로 내림차순 정렬하기 방법1) sb.reverse() 로 뒤집기 package codingTestStudy.week1; im..
https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제) MBIT의 EI, NS, FT, JP 처럼 성격유형 RT, CF, JM, AN 있다. 7개의 선택지가 있고, 각각 1~7점이다. "RT" 질문이 있을 때, 각 선택지별로 점수 배분은 아래와 같이 된다. 1점 2점 3점 4점 5점 6점 7점 R+1 R+2 R+3 0 T+1 T+2 T+3 "TR" 질문 받았을 때는 1점 2점 3점 4점 5점 6점 7점 T+1 T+2 T+3 0 R+1 R+2 ..
https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방식) 1) progresses[]에 있는 작업들의 작업완료일을 계산해서 Queue에 추가한다. 작업완료일 = 100 - progresses[i] / speeds[i]; → 나누어 떨어지지 않으면 + 1 해준다. 2) Queue가 빌 때까지 반복하며, Queue의 첫번째원소(prev)와 현재원소(now)를 비교한다. - prev보다 now가 작거나 같다면, list에 추가되어있는 배포개수를 ..
https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제) N / 2 마리 선택할 수 있다. 가장 많은 종류 선택하는 방법 찾기 접근 방식) 중복 허용하지 않는 set 사용 1. set에 저장 2. set.size(), N/2 중에 최솟값 찾기 import java.util.*; class Solution { public int solution(int[] nums) { Set set = new HashSet(); for (int i : nums) {..
https://school.programmers.co.kr/learn/courses/30/lessons/12919 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제) seoul 배열 원소 중 "Kim"의 위치 찾기 접근 방식) indexOf() 를 사용하고 싶어서, Arrays.asList()를 사용해서 seoul 배열을 List로 바꿨다. import java.util.*; class Solution { public String solution(String[] seoul) { return "김서방은 " + Arrays.asList(seoul).inde..