문제 출처: https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 1. 문제 접근방식 먼저 가능한 부분 문자열을 모두 구하고 중복을 제거하는 방식을 생각해보았다.물론 배열 내부에 이미 존재하는지의 여부에 따라 배열에 넣는 방법도 있지만 Java의 HashSet을 이용하여 좀 더 편하게 중복을 제거하였다. ※ HashSet 이란? Set 인터페이스의 구현 클래스이다. 저장 순서가 유지되지 않으며 중복을 허용하지 않는다. 2. 내가 푼 코드 import java.io.BufferedReader; import java.io..
문제 출처: https://www.acmicpc.net/problem/10974 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 1. 문제 접근방식 먼저 숫자를 담을 배열 arr와 이미 사용한 숫자를 확인하기 위한 selected 배열을 선언하였다. 후에 selected 배열에서 한번 사용했던 숫자면 true로 변경해 주고 재귀의 방식으로 인자를 1 증가시킨 뒤 재호출한다. 이러한 방식을 통해 중복을 방지하여 출력하였다. 2. 내가 푼 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReade..
문제 출처:https://www.acmicpc.net/problem/17614 17614번: 369 민수는 같은 반 친구들과 369게임을 하고 있다. 369게임은 여러 명이 원형으로 둘러 앉아 시작 위치의 사람이 1을 외치며 시작된다. 이후 시계방향으로 돌아가며 2, 3, 4와 같이 1씩 증가된 수가 자 www.acmicpc.net 1. 문제 접근방식 문제를 잘 읽어야 한다. 일반적인 369의 방식과 똑같다. 주의할 점은 '36'과 같이 3, 6, 9가 여러번 나오는 경우에는 나온 횟수만큼 박수를 쳐야한다는 점이다. 처음에는 contains() 메서드를 사용하여 단순히 한번으로 계산해서 삽질을 했는데, 사실상 charAt(index)로 특정 숫자에 몇 번의 3, 6, 9가 나오는지 확인을 하며 count..
문제 출처: https://www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net 1. 문제 접근방식 두 문자열을 비교할 때 길이가 같아질 때까지 A 문자열 앞뒤로 아무 문자열을 추가한다는 조건이 있다. 이러한 조건을 잘 생각해 보면 A 문자열에 아무 문자나 추가할 때 B와 최대한 같은 문자를 추가하면 되는 것이고 이 말인즉슨 B 문자열 내에서 반복문을 돌며 A 문자열과의 차이가 최소가 되도록 하는 시점을 찾으면 되는 것이다...