230620_Tue

KHΒ·2023λ…„ 6μ›” 20일
0

TIL

λͺ©λ‘ 보기
15/58
post-thumbnail

Problems

  1. 두 개 λ½‘μ•„μ„œ λ”ν•˜κΈ°
  2. 둜또의 μˆœμœ„
  3. λͺ¨μ˜κ³ μ‚¬
  4. λ¬Έμžμ—΄ μ •λ ¬ν•˜κΈ°
  5. λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ λ°°μΉ˜ν•˜κΈ°
  6. μ†Œμˆ˜ λ§Œλ“€κΈ°
  7. 숫자 λ¬Έμžμ—΄κ³Ό μ˜λ‹¨μ–΄
  8. μ‹œμ € μ•”ν˜Έ
  9. μ‹ κ·œ 아이디 μΆ”μ²œ
  10. μ•½μˆ˜μ˜ κ°œμˆ˜μ™€ λ§μ…ˆ
  11. μ•½μˆ˜μ˜ ν•©
  12. μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜
  13. λ‚˜λ¨Έμ§€κ°€ 1이 λ˜λŠ” 수
  14. μ†Œμˆ˜ μ°ΎκΈ°

Attempts

1. 두 개 λ½‘μ•„μ„œ λ”ν•˜κΈ°

SortedSet<Integer> combinations = new TreeSet<>();

μ‘°ν•©(combination) 경우의 수λ₯Ό λ°˜λ³΅ν•˜λŠ” λ£¨ν”„μ—μ„œ
κ΅¬ν˜„μ²΄μ— addν•˜μ—¬ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ λ‹΄λ˜ λ°˜λ³΅λ˜μ§€ μ•Šλ„λ‘ 함.

2. 둜또의 μˆœμœ„

μ•Œμ•„λ³Ό 수 μ—†λŠ” 수λ₯Ό 0으둜 ν‘œκΈ°ν•  λ•Œ
졜고 μˆœμœ„ = 0이 무쑰건 λ§žλŠ” 숫자둜
μ΅œμ € μˆœμœ„ = 0이 무쑰건 ν‹€λ¦° 숫자둜 λ˜λ―€λ‘œ
맞좘 숫자 κ°œμˆ˜μ™€ 0의 개수λ₯Ό ν™œμš©ν•΄ 쑰건 μž‘μ„±ν•¨.

3. λͺ¨μ˜κ³ μ‚¬

HashMap을 μ‚¬μš©ν• κΉŒ κ³ λ―Όν•˜λ‹€κ°€ λ°°μ—΄λ§Œ μ‚¬μš©ν•¨

4. λ¬Έμžμ—΄ μ •λ ¬ν•˜κΈ°

Comparator μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λŠ” 클래슀λ₯Ό λ§Œλ“€κ³  compare() λ₯Ό @Override

class CharComparator implements Comparator<String>{
	private int index;
	public CharComparator(int index){
		this.index = index;
	}
	
	@Override
	public int compare(String s1, String s2){
		char c1 = s1.charAt(index);
		char c2 = s2.charAt(index);
		if (c1 == c2) {
            return s1.compareTo(s2); 
			// Sort lexicographically 
        }
		return Character.compare(c1,c2);
	}
}
Arrays.sort(strings, new CharComparator(n))

5. λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ λ°°μΉ˜ν•˜κΈ°

Arrays.sort(arr, Comparator.reverseOrder());

6. μ†Œμˆ˜ λ§Œλ“€κΈ°

static boolean isPrime(int n){
        if(n == 1)
            return false;
        else if(n == 2 || n == 3)
            return true;
        else {
            for(int i = 2; i<= Math.sqrt(n); i++){
                if(n%i==0)
                    return false;
            }
            return true;
        }
    }

7. 숫자 λ¬Έμžμ—΄κ³Ό μ˜λ‹¨μ–΄

μž…λ ₯ λ¬Έμžμ—΄μ„ 문자 배열에 λ„£κ³  전체 λ£¨ν”„ν•˜λ©΄μ„œ 검사

8. μ‹œμ € μ•”ν˜Έ

7κ³Ό 같은 λ°©λ²•μœΌλ‘œ 접근함.
"zλ₯Ό 1만큼 λ°€μ–΄μ„œ a둜 λ§Œλ“€κΈ°"λŠ” μ›ν˜• 큐λ₯Ό μ‚¬μš©ν• κΉŒ κ³ λ―Όν•˜λ‹€κ°€ κ·Έλƒ₯ λ°°μ—΄λ‘œ ASCII κ°’ κ΄€μ°°ν•˜λ©΄μ„œ κ΅¬ν˜„ν•¨
Character.toChars(64+diff) : diffκ°€ 1인 경우 λŒ€λ¬Έμž A
Character.toChars(96+diff) : diffκ°€ 1인 경우 μ†Œλ¬Έμž a

9. μ‹ κ·œ 아이디 μΆ”μ²œ

λ§ˆμΉ¨ν‘œ(.)κ°€ 2번 이상 μ—°μ†λœ 뢀뢄을 ν•˜λ‚˜μ˜ λ§ˆμΉ¨ν‘œ(.)둜 μΉ˜ν™˜

μ •κ·œν‘œν˜„μ‹μ„ .replaceAll("(.)\1+", ".") 이걸둜 ν•΄μ„œ 계속 ν‹€λ¦Ό...
(.) <- μ–΄λ–€ λ¬ΈμžλΌλ„
\1+ <- μ—°μ†λ˜λŠ” 경우
즉 μ—°μ†λ˜λŠ” λ¬Έμžλ“€μ€ ν•œκ°œμ˜ .으둜 λ¬Άμž„
예λ₯Ό λ“€μ–΄ "abbcccdddd" 의 경우 "a..."이 됨
근데 이건 문제 μš”κ΅¬μ‚¬ν•­μ΄λž‘μ€ 닀름...

μ•Œλ§žμ€ ν‘œν˜„μ€ .replaceAll("\.+",".")
"\.+" <- μ—¬λŸ¬ 개의 .이 λ°˜λ³΅λ˜λŠ” 경우

10. μ•½μˆ˜μ˜ κ°œμˆ˜μ™€ λ§μ…ˆ

 if(num%j==0) count++;

11. μ•½μˆ˜μ˜ ν•©

10κ³Ό κ°™μŒ

12. μ΅œλŒ€κ³΅μ•½μˆ˜μ™€ μ΅œμ†Œκ³΅λ°°μˆ˜

이전에 λ°±μ€€μ—μ„œ ν’€μ—ˆλ˜ λ‚΄μš©

int gcd = 1;
	for(int j = 1; j<=a && j<=b; j++){
		if(a%j==0 && b%j==0)
			gcd = j;
	}
int lcm = a*b/gcd;

13. λ‚˜λ¨Έμ§€κ°€ 1이 λ˜λŠ” 수

if(n%i==1){
                ans = i;
                break;
            }

14. μ†Œμˆ˜ μ°ΎκΈ°

λ°±μ€€μ—μ„œ ν‘Όκ±°

μ‹œκ°„λ³΅μž‘λ„λ₯Ό μ€„μ—¬λ³΄μž

  1. μ§μˆ˜λŠ” 2λ₯Ό μ œμ™Έν•˜λ©΄ μ „λΆ€ μ†Œμˆ˜κ°€ μ•„λ‹ˆλ―€λ‘œ λ°˜λ³΅μ—μ„œ μ œμ™Έ κ°€λŠ₯
  2. (λ°˜λ³΅λ³€μˆ˜) <= Math.sqrt(n)

Results

전에 ν‘Ό λ‚΄μš©μ΄ 도움이 λ˜μ—ˆλ‹€

Insights

HashMapμ΄λ‚˜ μ›ν˜• 큐 같은 자료ꡬ쑰λ₯Ό 문제 ν’€λ•Œ μ‚¬μš©ν•˜κΈ°κ°€ μ–΄λ ΅κ²Œ λŠκ»΄μ‘Œλ‹€.
자료ꡬ쑰 곡뢀가 더 ν•„μš”ν•˜λ‹€...

이것도 ν•΄μ•Ό ν• λ“―

profile
What, How, Why

0개의 λŒ“κΈ€