diff --git a/climbing-stairs/5YoonCheol.java b/climbing-stairs/5YoonCheol.java new file mode 100644 index 000000000..7d10e1647 --- /dev/null +++ b/climbing-stairs/5YoonCheol.java @@ -0,0 +1,19 @@ +public class Solution { + //피보나치 수열과 동일하다. + public int climbStairs(int n) { + // n < 3 일 때 n번째 계단에 오르는 방법은 n개 + if (n < 3) return n; + // n >= 3 일 때는 (n-1)번째 계단에 오르는 방법 + (n-2)번째 계단에 오르는 방법 + int sec = 0; + int prev = 1; + int current = 2; + for (int i = 3; i <= n; i++) { + //i값이 증가할수록 (i-1)번째 값과 (i-2)번째 값이 각각 현재의 값과 이전 값으로 변경된다. + sec = prev; + prev = current; + //현재 값은 (i-1)번째 값과 (i-2)번째 값의 합 + current = prev + sec; + } + return current; + } +} diff --git a/valid-anagram/5YoonCheol.java b/valid-anagram/5YoonCheol.java new file mode 100644 index 000000000..7db4180d8 --- /dev/null +++ b/valid-anagram/5YoonCheol.java @@ -0,0 +1,29 @@ +import java.util.HashMap; + +public class Solution { + public boolean isAnagram(String s, String t) { + //HashMap 자료구조를 통해 아나그램 여부 판별 + //s,t 문자열에서 문자인 것만 HashMap에 넣어준다. + //이때 중복인 경우 value 값을 1씩 증가시킨다. + //Character 타입의 개수가 맞지 않으면 false + //두 개의 Map이 서로 동일하면 아나그램이다. -> true + //그 외의 경우는 Character의 개수가 맞지 않기 때문에 false + HashMap sMap = new HashMap<>(); + HashMap tMap = new HashMap<>(); + for (Character c : s.toCharArray()) { + if (Character.isLetter(c)) { + sMap.put(c, sMap.getOrDefault(c, 0) + 1); + } + } + + for (Character c : t.toCharArray()) { + if (Character.isLetter(c)) { + tMap.put(c, tMap.getOrDefault(c, 0) + 1); + } + } + + if (sMap.size() != tMap.size()) return false; + else if (sMap.equals(tMap)) return true; + else return false; + } +}