문제 https://www.acmicpc.net/problem/2831 2831번: 댄스 파티 남자 N명과 여자 N명이 상근이가 주최한 댄스 파티에 왔다. 상근이는 모든 사람의 키를 알고있다. 각 남자는 모두 여자와 춤을 출 수 있고, 여자는 남자와 춤을 출 수 있다. 모든 사람은 많아야 한 www.acmicpc.net 풀이 1. 그룹에 따라 리스트에 입력 받음 (1). 본인보다 키가 큰 여성을 원하는 남자 리스트 (man_wanna_taller) (2). 본인보다 키가 작은 여성을 원하는 남자 리스트 (man_wanna_smaller) (3). 본인보다 키가 큰 남성을 원하는 여자 리스트 (woman_wanna_taller) (4). 본인보다 키가 작은 남성을 원하는 여자 리스트 (woman_wanna..
코딩테스트
문제 https://www.acmicpc.net/problem/1941 1941번: 소문난 칠공주 총 25명의 여학생들로 이루어진 여학생반은 5×5의 정사각형 격자 형태로 자리가 배치되었고, 얼마 지나지 않아 이다솜과 임도연이라는 두 학생이 두각을 나타내며 다른 학생들을 휘어잡기 시작 www.acmicpc.net 풀이 1. 7명의 조합을 만든 뒤 2. 연결되게 앉았는지 체크 1. 7명의 조합 - dfs로 구현 public static void comb(int depth, int cnt) { if(cnt==7) { if(bfs()) answer++; return; } for(int i=depth; i
https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 풀이 이 문제는 깊게 생각을 안 했다. 문제에 있는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9 수열을 보자마자 arr[i] = arr[i-2] + arr[i-3] 의 점화식을 떠올렸다. 이를 dp배열을 생성하여 그대로 구현 (주의) dp배열을 int형으로 선언 시 계산값이 오버플로우가 발생할 수 있음 long타입으로 선언할 것. package dp; import java.io.BufferedR..
https://www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 풀이 트리 구조를 입력 받기 위해 ArrayList의 배열을 사용하였다. tree = new ArrayList[N]; 처음부터 입력을 다 받아 놓고, 노드들의 부모 정보를 저장 받을 때, 애초에 삭제할 노드와 삭제할 노드의 자식 노드의 정보를 저장하지 않았음. for(int i=0; i
문제 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. HashMap 사용. 원하는 제품과 수량을 put 원하는 제품의 총 개수 구함 => count HashMap map = new HashMap(); int count = 0; for(int i=0 ;i0){ count--; } map.put(discount[i+10], map.get(discount[i+10])-1); } if(count==0) answer++; } 전체 코드 im..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 효진이는 1칸 또는 2칸을 뛰어서 이동할 수 있다. 효진이가 3번째 칸에 가려고 하는 경우의 수는 1번째 칸에서 2칸 뛰는 방법 1가지 2번째 칸에서 1칸 뛰는 방법 1가지 따라서, 3번째 칸까지는 1번째 칸까지 가는 방법의 수 + 2번째 칸까지 가는 방법의 수의 값과 같다. 다시, 4번째 칸에 가려고 하는 경우의 수는 3번째 칸에서 1칸 뛰는 방법 1가지 2번째 칸에서 2칸 뛰는 방법..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 유클리드 호제법을 이용하여 순서대로 arr[i-1]과 arr[i]의 최소공배수를 구하기 arr[i-1]와 arr[i]의 최소 공배수를 arr[i]에 갱신 유클리드 호제법 2개 숫자의 최대 공약수를 구하는 알고리즘 자연수 a와 b에 대해 a를 b로 나눈 나머지 r이라고 하면, a와 b의 최대 공약수와 b와 r의 최대공약수는 같다. a를 b로 나눈 나머지 r을 구한 뒤, b를 r로 나..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/67257 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 요약 연산자 우선순위를 재정의 하여 주어진 수식을 계산. 재정의 된 우선순위를 가지고 계산한 값 중 가장 큰 값 리턴 풀이 0. expression에서 연산자와 숫자 분리 String number = ""; numList = new ArrayList(); operList = new ArrayList(); for(int i=0; i
https://www.acmicpc.net/problem/2012 2012번: 등수 매기기 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다. www.acmicpc.net 문제 2007년 KOI에 N명의 학생들이 참가하였다. 경시일 전날인 예비소집일에, 모든 학생들은 자신이 N명 중에서 몇 등을 할 것인지 예상 등수를 적어서 제출하도록 하였다. KOI 담당조교로 참가한 김진영 조교는 실수로 모든 학생의 프로그램을 날려 버렸다. 1등부터 N등까지 동석차 없이 등수를 매겨야 하는 김 조교는, 어쩔 수 없이 각 사람이 제출한 예상 등수를 바탕으로 임의로 등수를 매기기로 했다. ..
문제 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한다. 예를 들어, 문서가 abababa이고, 그리고 찾으려는 단어가 ababa라면, 세준이의 이 함수는 이 단어를 0번부터 찾을 수 있고, 2번부터도 찾을 수 있다. 그러나 동시에 셀 수는 없다. 세준이는 문서와 검색하려는 단어가 주어졌을 때, 그 단어가 최대 몇 번 중복되지 ..