n과 m 1번 문제와 보기에는 비슷하지만, 조건이 몇개 붙는다. 조건은 사전순으로 출력해야 하며 중복되는 배열은 배제한다. 즉 1 2 3이나 2 3 1 이나 3 2 1은 서로 같으니 1 2 3만 출력해야 한다. 처음에는 1번 문제를 풀었던 방식처럼 사용했는지 안했는지를 표시하는 boolean배열을 만들어서 풀어보려고 했으나, 그럴경우 조건이 복잡해져서 좀 더 단순하게 풀었다. 단순하게 생각해 보면 한 행에서 맨 앞에 있는 수보다 항상 크고 사전적으로 수열이 만들어야 되지므로 반복문을 이용해서 풀이했다. import java.util.Scanner; public class Main { static int[] arr; public static void main(String[] args) { Scanner s..
백트래킹 문제의 가장 첫번째에 있는 문제. 매우 쉬울줄 알았으나, 생각보다 어려웠다. 백트래킹을 구현하는것 자체가 처음이니.. 백트래킹이란? 깊이 우선탐색을 하는것 처럼 변수에 허용되는 값을 하나씩 대입서 조건을 만족하지 않을것 같은 경우 해당 경로는 가지 않고 전 노드로 돌아가는 기법이다. 따라서 반복의 횟수를 줄일수 있다. 간단핟게 풀이를 설명하자면 출력할 수열의 길이를 가진 배열 하나와, 숫자의 사용여부를 표시하기 위한 배열을 하나만들고, 사용 여부 배열이 false인 index값을 출력할 배열에 입력하고 다시 메소드를 불러서 반복한다. 이때, 깊이가 출력할 수열의 크기가 같아지면 출력을 하고 전상태 노드로 돌아간다. import java.util.Scanner; public class Main {..
문제를 이해하는데 시간이 꽤 걸렸다. 문제를 설명하자면, 입력 받은 수가 해당 입력받은 수들의 배열에서 자신보다 적은 수는 몇개가 있는지를 구하는것이다. 이때, 중복은된 수는 제외한다. 즉 2,1,1,4 이렇게 입력을 받으면 2를 압축시키면 1이 된다. 자신보다 작은 수 1이 있기 때문이고, 중복은 제외하기 때문이다. 푸는 방법은 처음에는 카운팅 정렬로 풀으려고 했지만 카운팅은 딱히 의미가 없기에 중복되지 않는 수를 가지는 배열을 만들고, 오름차순으로 정렬을 한 후 입력받은 배열에 해당하는 값을 중복되지 않는 배열의 값이 같은 인덱스를 출력하는 식으로 풀었다. 다만 이 알고리즘은 풀리기는 하나 시간초과가 뜬다. 아무래도 수가 넓게 퍼져있으면 그만큼 시간이 오래걸려서 그런듯 하다. import java.u..
2차원 배열을 사용해서 나이를 문자로 받은뒤 정수형으로 변환시키거나 나이와 이름을 가지고 있는 클래스를 만들어서 풀면 된다. 클래스를 이용해서 풀어보았다. Arrays.sort를 사용해 정렬하였고, 나이가 다른 경우 나이를 뺴줘서 정렬을 해주었지만, 나이가 같은 경우는 0을 리턴해 그대로 있게 해뒀다. 또한 조건으로 나이가 같으면 가입 순서대로 정렬을 하라고 되있다만, 이경우에는 가입 순서대로 입력이 되어있기에, 가입 순서대로 정렬이 되어있다. 따라서 건드릴 필요가 없다. 다만, 메모리와 시간이 무지막지하게 많이 써서 개량이 어느정도 필요해 보인다. import java.util.Arrays; import java.util.Scanner; public class Main { public static vo..
객체의 정보를 Json형태로 바꾸거나, Json형태의 String을 해당 객체로 바꿔주는 클래스이다. 객체에서 Json형태로 ObjectMapper objectMapper=new ObjectMapper(); User user=new User("steve",10,"010-2222-3333"); String text=objectMapper.writeValueAsString(user); User 타입의 user객체를 생성하고 writeValueAsString메소드를 통해 user를 String형태로 변환 시키면 JSON형태의 {"name":"steve","age":10,"phone_number":"010-2222-3333"}가 된다. 이때 주의할점은 Json형태로 바꿀때 해당 클래스의 Getter로 값을 가져..
글자수 순서대로 오름차순으로 정렬하되, 글자수가 같으면 사전순대로 정렬하는 문제. 단 같은 글자는 한번만 출력한다. Comparator를 사용해 정렬하지만 문자열을 정렬할때능 CompareTo를 사용해 정렬한다. CompareTo는 비교하는 객체가 비교하려는 객체보다 앞에 있거나 같은 위치에 있다면 음수와 0을 반환하지만 뒤에 있다면 양수를 반환한다. 따라서 사전순서대로 정렬을 할 수 있다. 그리고 같은 단어는 한번만 출력하면 되기에, 정렬을 한다음 출력한 단어를 저장하고 저장한 단어와 출력한 단어를 비교해 같지 않다면 출력을 하는 식으로 했다. import java.util.Arrays; import java.util.Scanner; public class Main { public static void..