검색결과 리스트
코딩테스트에 해당되는 글 3건
- 2021.01.05 #3 알고리즘 문제 풀기
- 2021.01.03 #2 알고리즘 문제 풀기
- 2021.01.03 #1 알고리즘 문제 풀기
글
#3 알고리즘 문제 풀기
※ 문제 설명 ※
※ 제한 사항 ※
※ 풀이 코드 ※
☞ 해당 문제는 3진법으로 진행하여 문제풀이를 하였다. 풀이는 간단하다.
1. n의 숫자를 변수로 선언한다.
2. 해당 숫자의 나눈 후 나머지를 String 타입에 이어 붙있다.
3. n의 숫자를 선언한 변수를 /3씩 해준다.
4. 마지막으로 String에 0010 이런식으로 문자열이 만들어져 있는 것을 Integer 타입으로 변환을 시켜준다.
└ 뒤에 3을 추가한 이유는 변환할 진수값을 넣는 것이다.
5. 3진수로 변환된 변수를리턴 시켜준다.
'코딩테스트' 카테고리의 다른 글
#2 알고리즘 문제 풀기 (0) | 2021.01.03 |
---|---|
#1 알고리즘 문제 풀기 (0) | 2021.01.03 |
글
#2 알고리즘 문제 풀기
해당문제는 2016년 1월1일이 금요일이라고 가정했을 때 입력받은 month , day 의 요일을 구하는 문제입니다.
※ #1 달마다의 마지막 일수 , 요일 구하기 ※
☞ day에서 FRI 가 맨앞에 있는 이유는 1월1일이 금요일이기에 이순서로 지정을 한 것입니다.
☞ 2개의 배열을 사용하여 해당 몇월/몇일 은 무슨요일인기 어떻게 구하는 것인가?
※ #2 배열을 활용하여 요일 구하기 ※
☞ 1번째 해당 월의 일수를 total 변수에 모두 더한다.
☞ 2번째 일수를 total 변수에 더한다.
- 일수를 더할때 -1을 해주는 이유는 배열의 index는 0부터 시작이기때문에 -1을 해준 것입니다.
☞ total 일수의 더해진 것을 total % 7 연산자를 사용하면은 해당 주의 무슨 요일인지 나올 것입니다.
※ #3 전체 코드 ※
'코딩테스트' 카테고리의 다른 글
#3 알고리즘 문제 풀기 (0) | 2021.01.05 |
---|---|
#1 알고리즘 문제 풀기 (0) | 2021.01.03 |
글
#1 알고리즘 문제 풀기
오늘은 해당 문제를 풀어볼 것이다.
이라고 가정을 하고 진행을 해봅시다.
내가 생각한 방법은 HashSet으로 중복을 제거된 상태의 객체를 만든 후 그 set을 List에 담고 그것을 배열에 담아서 리턴해주는 방식으로 진행을 하였다.
※ #1 HashSet에 서로 다른 index의 값을 넣어주기 ※
HashSet<Integer> set = new HashSet<Integer>();
for(int i=0; i<numbers.length;i++){
for(int i2=0; i2<numbers.length; i2++){
if(i == i2) {
continue;
}
set.add(numbers[i] + numbers[i2]);
}
}
return test(set);
☞ 이중for문을 돌면서 서로 다른 index에 있는 값들을 set에 넣어준다.
☞ HashSet은 중복된 값을 넣을 수 없기때문에 중복이 제거된 수만 넣어지게 된다.
☞ 리턴을 test 라는 함수에 인자값으로 던져준다.
※ #2 HashSet의 인자값을 배열형식으로 변환하기 ※
public static int[] test(HashSet set) {
System.out.println(set);
List<Integer> list = new ArrayList<Integer>(set);
Collections.sort(list);
int[] arr = new int[list.size()];
for(int i=0; i<list.size(); i++) {
arr[i] = list.get(i);
}
return arr;
}
☞ HashSet 을 List로 변환하기
☞ List에 있는 값들을 배열으로 변환하여 리턴시키기
방법은 간단합니다.
변환된 List를 for문을 돌면서 배열에 넣어주고 그 배열을 리턴시켜주면 끝입니다.
※ #3 전체 코드 ※
public static int[] solution(int[] numbers) {
HashSet<Integer> set = new HashSet<Integer>();
for(int i=0; i<numbers.length;i++){
for(int i2=0; i2<numbers.length; i2++){
if(i == i2) {
continue;
}
set.add(numbers[i] + numbers[i2]);
}
}
return test(set);
}
public static int[] test(HashSet set) {
System.out.println(set);
List<Integer> list = new ArrayList<Integer>(set);
int[] arr = new int[list.size()];
for(int i=0; i<list.size(); i++) {
arr[i] = list.get(i);
}
return arr;
}
◈ 햇갈렷던 부분 ◈
- 서로다른 index를 더하면 수많은 더한 값들은 어떻게 처리를 해야하는가?
- 중복된 값들은 어떻게 중복제거를 할 것인가?
- HashSet 을 어떻게 배열형식으로 리턴을 해주도록 할것인가?
위의 3개의 관점에서 햇갈렷던거 같습니다.
사람마다의 생각하는 것과 처리하는 것을 수많가지 이므로 이보다 더 좋은 처리방법or다른처리방법 댓글로 남겨주시면 감사하겠습니다.
'코딩테스트' 카테고리의 다른 글
#3 알고리즘 문제 풀기 (0) | 2021.01.05 |
---|---|
#2 알고리즘 문제 풀기 (0) | 2021.01.03 |