본문 바로가기

프로그래머스 AND 백준/java11

백준 10448 배워두면 쓰기 좋은 개념이 나와서 써본다. 배열로 어떠한 조건이 맞는지 아닌지 확인할 때는 이렇게 boolean의 배열을 만드는 게 좋다. 이런 배열을 여러번 쓸 때는 이런 조건을 한번만 정의해두면 되기 때문에 시간복잡도에서 굉장히 유리하다. 아이디어는 다음과 같다. 삼각수 두개를 합한 배열 + 삼각수를 합한 배열 == 삼각수 세개를 합한 배열 1. 삼각수 두개를 합한 boolean의 배열을 만든다. 2. .삼각수 세개를 합한 boolean의 배열을 만든다. 3. 입력된 수의 index가 tripleOfEuraka에 속하는지 확인한다. (배열 인덱스가 입력된 수이고, 그에 대한 true, false로 알 수 있다.) package programers; import java.util.Scanner; pub.. 2024. 3. 14.
백준 3273 번 - 자바 아마 이 문제는 이중포인터로 풀라고 만든 것 같은데 나는 먼저 생각난게 TreeSet이라서 트리셋으로 풀었다. 집합은 뭘 해도 시간복잡도가 낮으니까. 아이디어는 이거다. 1. 어차피 중복을 허용하지 않으니까 더한 값이 x가 될 때 짝은 무조건 하나밖에 없으므로 모두 지우면서 result++해준다. 2. a + b > x라면, 가장 작은 수인 a랑 더해도 큰거기 때문에 b를 삭제한다. 3. a + b < x라면, 가장 큰 수인 b랑 더해도 작은거기 때문에 a를 삭제한다. 인덱스가 하나거나 없으면 break; TreeSet은 집합이지만 알아서 정렬이 되는 자료구조다. 참고하자. 왜인지 모르겠는데 set.size가 1일 때는 어차피 처음에는 계속 NoSuchElementException이 떴는데 이유를 모르다.. 2024. 3. 12.
백준 26069번 java 말이 길지만 결국 "ChongChong" 과 같은 line에서 입력되면 count가 하나 늘어나는 구조 + 해당 입력값도 ChongChong과 똑같은 능력을 가진다는 말이다. 풀이: "ChongChong"이라는 String이 들어간 set (dancingPeople)을 만들고, contains를 이용해 입력값 둘 중 하나가 set에 있다면 둘 다 set에 add하고 마지막에 size값을 출력한다. set은 중복을 허용하지 않으므로 중복된 값을 add해도 상관 없다. import java.io.*; import java.util.HashSet; public class Main { public static void main(String[] args) throws IOException { BufferedRea.. 2023. 10. 25.
백준 25192번 java 풀이: array를 이용하면 문제는 풀 수 있지만 시간 초과가 나온다. 그렇기 때문에 dictionary인 hashmap이나 set(집합) hashset을 이용해서 풀면 된다. 또한 ENTER가 입력되면 해당 자료가 초기화되어야 하기 때문에 그 전에 size를 count에 더해주고 자료를 초기화한다. for문이 다 돌고 나면 마지막으로 size를 count에 더해주고 count를 출력한다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader.. 2023. 10. 24.
백준 1037번 java 1과 N은 주어지지 않고 나머지 수만 주어진다. ex) 8의 약수는 1, 2, 4, 8이기 때문에 (4, 2)가 입력된다. 풀이: N의 약수가 순서대로 주어지면 마주보는 값의 곱은 N이다. ex) 1*8 = 8, 2*4 = 8 고로 Array를 만들어서 sorting 하고 0번째 인덱스와 마지막 인덱스 값을 곱해주면 완료. 제곱수 의 경우: ex)25 Array에 입력되는 값인 5를 제곱하여 출력되기 때문에 값은 동일하게 출력된다. import java.util.Scanner; import java.util.Arrays; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N.. 2023. 10. 23.