알고리즘/알고리즘 문제
-
[HackerRank] Sherlock and Anagrams 풀이(java)알고리즘/알고리즘 문제 2019. 4. 22. 21:20
내가 알고리즘을 정말 못푸는 건가싶다. 이 문제 푸는데 3시간 걸렸다. 몇달 뒤에 다시 풀어도 이정도 걸릴 것 같아서 기록해두기. 이 문제는 anagram을 찾는 문제인데, anagram이란 철자 바꾸기 놀이를 뜻하는데, 철자를 재배열해서 다른 문자로 만드는 것이다. 즉, 어떻게 배열되어있든 두 단어를 비교했을 때 알파벳만 맞으면 된다.(순서가 뒤죽박죽이라도) 위의 예시 중 하나를 들자면, ifailuhkqq는 ifa 와 fai는 순서는 다르지만 동일한 알파벳을 가지고 있다. 단일 알파벳이라도 i와 i는 순서를 바꿔도(의미가 없지만) 같다. 내 풀이의 시간복잡도는 O(n^4) 이다. 아주 비효율적인 시간복잡도 같지만, 다 풀고 나서 다른 풀이들도 봤는데 O(n^4)의 시간복잡도를 가지고 있었다. 예시 하..
-
[Algorithm] BFS(너비우선탐색) 내맘대로 끄적인 java 슈도코드와 완성된 코드알고리즘/알고리즘 문제 2018. 11. 8. 22:59
bfs 공부했던 BFS 슈도코드로 끄적여보기 본사로 출장을 가던 중, 전날 공부했던 BFS를 떠올리며 java로 어떻게 구현할까 슈도 코드 방식으로 끄적여봄. 본사 도착하자마자 붕 뜨는 시간에 얼른 구현해보았는데 잘 돌아갔다. 예쓰! int[][] adjacencyMatrix = new int[][] // if node exist = 1, non exist = 0 Queue queue = new Queue int[] distancePath = new int[adjacency.length] int[] predecessor = new int[adjacency.length] Arrays.fill(distancePath, -1) // -1 means unvisitied node enqueue(시작점) dinst..
-
[java] 진법 변환 알고리즘(기수 변환)알고리즘/알고리즘 문제 2018. 8. 7. 11:18
해당 알고리즘은 2진수~36진수까지 진법 변환이 가능한 알고리즘이다. 아래 사진에서 보는 것과 같이 구현해낸 알고리즘이다. 나머지를 통해 거꾸로 읽어서 원하는 진수로 변환된 수를 알아낼 수 있다. * 소스 123456789101112131415161718192021222324252627282930313233 public class CardinalConversion { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWr..
-
문자 거꾸로 출력 코드(java)알고리즘/알고리즘 문제 2017. 9. 23. 16:54
예전에 판교의 한 회사에 서류를 통과하고 면접을 보러갔을 때, 코딩 테스트를 치뤘다. 문자 거꾸로 출력 문제가 나왔었는데, 메서드 쓰는 방법을 착각해서 틀렸었다. 밑의 charAt() 안에 인덱스 순서대로 출력시키기 위해서 저 j를 넣었어야 했는데... 깜빡했다. 문자 거꾸로 출력하기 12345678910111213import java.util.Scanner; public class ReverseString { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); String hi = scanner.nextLine(); for(int j=hi.length()-1; j>=0; j--){ System.out.prin..
-
피보나치 수열 코드(java)알고리즘/알고리즘 문제 2017. 9. 23. 15:03
내 블로그의 첫 포스팅. 사회의 병아리, 초급 개발자인만큼 그날 그날한 공부를 조금씩 기록하고자 한다. 부족한 부분이 많겠지만, 매일매일 성장해 나가자. 먼저, 회사에서 혼자 공부하라고 준 시간동안 피보나치 수열의 원리를 보고 혼자서 손코딩으로 구성해보고 이클립스에서 수정한 뒤 이렇게 올린다. 피보나치 수열 알고리즘 12345678910111213141516171819202122import java.util.Scanner; public class FibonacciSequence { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] fibonacci =..