coding test

· coding test
10989번: 수 정렬하기 3 파악 그냥 정렬하면 된다. 근데 소팅 메소드나 삽입 정렬 같은거 쓰면 O($n^2$)인데 숫자가 $10^7$씩이나 들어와서 쉽지않다. 접근 N개의 숫자와 자연수([1, 10000])의 범위가 들어오는데 이 자연수는 $10^4$밖에 안돼서 이걸 써야할듯 어차피 자연수만 들어오고 index도 자연수니까 카운트배열을 사용하면서 카운트배열의 인덱스에 해당하는 숫자가 0이 아니라면(존재한다면) index 순서대로 정렬해주면 되지 않을까 주의해야할 점이 이 방법은 자연수로 10만개 정도가 들어오면 메모리가 넘쳐서 쓰기 힘들 뿐더러 숫자가 아니라면 쓰기 힘들다. 만약 음수가 있다면 0에는 0은 -100이고 200은 100으로 사용할 수도 있다. import java.util.Scanne..
· coding test
10431번: 줄세우기 문제 해석 애들의 키를 오름 차순으로 만들면 된다. 내 앞 숫자가 나보다 크다면 앞으로 가고 작다면 가만히 있으면 된다. 이때 내가 앞으로 가야한다면 나보다 큰 애들은 한발자국씩 뒤로 움직여야할테니 그 숫자를 체킹해야한다. 접근 간단하다, 해당 숫자와 배열에 미리 들어가있는 숫자들을 비교해서 해당 숫자보다 큰 수만큼 +해주면 된다. 대충 코드를 짜보면 int[] h = new int[20]; for (int i = 0; i h[i]) { ans++; } } } 이런식으..
· coding test
1236번: 성 지키기 문제 해석 영식이는 직사각형 모양의 성을 가지고있고 경비원을 알맞게 배치해서 영식이를 만족시켜야함 영식이를 만족시키는 방법은 경비원을 모든 행과 열에 경비원을 최소 한명씩은 배치 시켜야함 접근 예제1에서는 모든 행과 열에 경비원이 있어야함. 즉 대각선에 있으면 됨.(따로따로 배치해도 되긴함) 단, 모든 행과 열을 커버하려면 현재 경비원이 있는 행과 열을 제외하고 경비원이 들어가야함 이말은 색칠을 싹싹 하고 남은 칸에 경비원을 배치해야함(표를 그려보면 된다) 각 행과 열에 경비원이 있나? 보호받지 못하는 행열의 개수를 구한다 둘 중 큰 값을 출력힌다. 풀이 1. 행과 열을 따로따로 계산한 버전 package learnString; import java.util.Scanner; cla..
· coding test
13223번: 소금 폭탄 문제 해석 소금팔에 시간을 입력해야함. 첫째줄에는 현재시각이 나오고 둘째줄에는 소금 투하시간이 나옴 즉 두 시간의 차이를 구하는 문제임 예시 20시와 04시의 시간 차이는 8시간 12:34:56 과 14:36:22 시간차이는 2시간 1분 26초 차이 접근법 시간을 입력받는다 : 문자를 기준으로 시간, 분, 초를 쪼갠다. 입력받은 두개의 시간을 비교한다. 두개의 시간, 분, 초의 차이를 비교한다 구해진 시간을 HH:MM:SS 형태로 출력한다 1. 시간을 입력받는다 일단 시간을 쪼개는거부터 난관인데 몇가지 방법이 있을 것 같다. 일단 “:” 가 포함되어 있기 때문에 무조건 문자로 받아야한다. 그 다음 세가지 방법이 있다. 그냥 냅다 반복문을 돈다. subString() 함수를 사용하..
· coding test
1543번: 문서 검색 해석 주어진 단어가 문서에 등장하는 횟수를 구해라 접근 문서의 첫 글자부터 순회 문서의 지금 글자부터 주어진 단어와 한글자씩 비교 단어와 완전히 일치하면 개수를 올린다. 해당 단어가 등장한 이후부터 2를 반복 단어와 매치되지 않았다면 단어와 매칭되지 않았다면 다음 글자에서 2를 반복 IndexOf() 함수를 사용하면 더 쉽게 풀 수 있을 듯 하다 주의점 공백을 포함한 것을 입력받아야한다! sc.next(); 이거는 공백이 있다면 슬라이싱 해버린다! String doc = sc.nextLine(); 이렇게 받아야한다 풀이 package learnString; import java.util.Scanner; class Main { public static void main (String..
· coding test
1157번: 단어 공부 문제 해석 Mississipi 이런 예제가 있을 때 i는 4개, s도 4개로 가장 많이 사용한 알파벳이 여러개 존재하기 때문에 ?를 출력 zZa 이 예제는 대소문자를 구분하지 않기 때문에 Z를 출력 나머지 예제들도 비슷하지만 주의점이 소문자가 많이 반복되어도 출력은 항상 대문자로 해야한다. 접근 문자열에서 가장 많이 등장한 알파벳 찾기(대소문자 구분 x) 각 알파벳의 개수를 구한다 그 중 최댓값을 구한다. 풀이 아마 키 포인트는 대소문자를 구분하지 않는다는 것과 가장 많이 나온 알파벳의 갯수가 중복된다면 ‘?’를 출력시켜야 하는 것일듯 하다. package learnString; import java.util.Scanner; class Main { public static int[..
· coding test
1919번: 애너그램 만들기 접근 처음에 2차원 배열을 생각하고 접근해봤는데 각각의 알파벳들을 검사할때 마다 count가 올라갔다. 그래서 두개의 문자열을 따로 순회하면서 카운팅을 하는 방법으로 생각을 바꿔봤다. 애너그램 → 두 영어 단어가 철자의 순서를 뒤바꾸어 같아질 수 있을 때 eg. dared ↔ bread 위의 경우 제거해야하는 최소 개수 2개 즉 공통된 단어빼고 전부 삭제하면 된다. A: “dared” : {’a’ : 1, ‘d’ : 2, ‘e’ : 1, ‘r’ : 1} B: “bread” : {’a’ : 1, ‘b’ : 1, ‘d’ : 1, ‘e’ : 1, ‘r’ : 1} 숫자가 공통으로 있는 단어는 카운트하지 않고 숫자가 없거나, 개수에 차이가 나는 알파벳은 카운트한다. 즉 위의 예시는 b..
· coding test
https://www.acmicpc.net/problem/2744 2744번: 대소문자 바꾸기 영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오. 입출력 입력 첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다. 단어의 길이는 최대 100이다. 출력 첫째 줄에 입력으로 주어진 단어에서 대문자는 소문자로, 소문자는 대문자로 바꾼 단어를 출력한다. 예제 예제 입력 WrongAnswer 예제 출력 wRONGaNSWER 풀이 반복문을 52개 쓰면 되긴 하는데 좀 ..
ron_nie
'coding test' 카테고리의 글 목록