ํผ์ฆ ๊ฒŒ์ž„ ์ฑŒ๋ฆฐ์ง€ [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]

Level 2

[PCCP ๊ธฐ์ถœ๋ฌธ์ œ] 2๋ฒˆ / ํผ์ฆ ๊ฒŒ์ž„ ์ฑŒ๋ฆฐ์ง€ JAVA ์ฝ”๋“œ

๋ฌธ์ œ ์ดํ•ด

  • n๊ฐœ์˜ ํผ์ฆ์„ ์ œํ•œ ์‹œ๊ฐ„ limit ๋‚ด์— ํ’€์–ด์•ผ ํ•จ
  • ๊ฐ ํผ์ฆ์˜ ๋‚œ์ด๋„๋Š” diffs[i]
  • ๋‚ด ์ˆ™๋ จ๋„ level์ด diffs[i]๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด times[i]๋งŒ์— ๋ฐ”๋กœ ํ’ˆ
    • level < diffs[i]๋ฉด (diffs[i] - level + 1) * times[i]์œผ๋กœ ํ˜„์žฌ ํผ์ฆ์„ ํ’€๊ณ , times[i-1]๋กœ ์ „ ํผ์ฆ์„ ๋‹ค์‹œ ํ’€๊ณ  ์™€์•ผ ํ•œ๋‹ค
      • ์ด ๋•Œ ์ „ ํผ์ฆ์€ ํ•œ ๋ฒˆ ์‹œ๋„๋งŒ์— ๋๋‚œ๋‹ค
  • ๋‚œ์ด๋„, ์†Œ์š” ์‹œ๊ฐ„, ์ˆ™๋ จ๋„ ๋ชจ๋‘ ์–‘์˜ ์ •์ˆ˜
  • ์ œํ•œ ์‹œ๊ฐ„ ๋‚ด์— ํผ์ฆ์„ ๋ชจ๋‘ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ˆ™๋ จ๋„์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ •์ˆ˜๋กœ ๋ฆฌํ„ดํ•˜๋„๋ก ํ•จ์ˆ˜ ์ž‘์„ฑํ•˜๋ผ

ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ์ตœ์  ๋‹ต์•ˆ์„ ์ฐพ์•˜๋‹ค.

  1. ์ˆ™๋ จ๋„์˜ ๋ฒ”์œ„๊ฐ€ ์–‘์˜ ์ •์ˆ˜๊ณ , ์ตœ๋Œ“๊ฐ’์€ 100,000๋กœ ๋ช…์‹œ๋˜์–ด ์žˆ์œผ๋‹ˆ, start = 1, end = 100000
  2. ์ค‘๊ฐ„๊ฐ’์— ๋Œ€ํ•ด check ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค
  3. check ํ•จ์ˆ˜๋Š” ์ค‘๊ฐ„๊ฐ’์„ ์ˆ™๋ จ๋„๋กœ ๊ฐ€์ •ํ•˜์—ฌ ํผ์ฆ์„ ํ’€์–ด์„œ ์‹œ๊ฐ„ ์ œํ•œ ๋‚ด์— ๊ฐ€๋Šฅํ•œ์ง€ boolean ๊ฐ’์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค
  4. ๊ฐ€๋Šฅํ•˜๋ฉด ์ˆ™๋ จ๋„์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด end = mid - 1๋กœ ๋‹ค์‹œ ์ด๋ถ„ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•œ๋‹ค
  5. ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉด ๊ฐ€๋Šฅํ•œ ์ˆ™๋ จ๋„๋ฅผ ์ฐพ๋Š” ๊ฒŒ ์šฐ์„ ์ด๊ธฐ ๋•Œ๋ฌธ์— start = mid + 1๋กœ ๋” ๋†’์€ ์ˆ™๋ จ๋„๋กœ ํƒ์ƒ‰ํ•œ๋‹ค
public int solution(int[] diffs, int[] times, long limit) {
    int answer = 0;

    int start = 1, end = 100000;
    while (start <= end) {
        int mid = start + (end - start)/2;
        if (check(mid, diffs, times, limit)) {
            answer = mid;
            end = mid - 1;
        } else {
            start = mid + 1;
        }
    }

    return answer;
}

private boolean check(int mid, int[] diffs, int[] times, long limit) {
    long timeTaken = times[0];
    for (int i = 1; i < diffs.length; i++) {
        if (diffs[i] <= mid) {
            timeTaken += times[i];
        } else {
            timeTaken += (diffs[i] - mid) * (times[i] + times[i-1]) + times[i];             
        }
    }
    return limit >= timeTaken;
}

์ด๋ชจํ‹ฐ์ฝ˜ ํ• ์ธํ–‰์‚ฌ [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]

lvl2

์ด๋ชจํ‹ฐ์ฝ˜ ํ• ์ธํ–‰์‚ฌ JAVA ์ฝ”๋“œ

๋ฌธ์ œ ์ดํ•ด

  • ๋ชฉํ‘œ
      1. ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค ๊ฐ€์ž…์ž๋ฅผ ์ตœ๋Œ€ํ•œ ๋Š˜๋ฆฐ๋‹ค
      1. ์ด๋ชจํ‹ฐ์ฝ˜ ํŒ๋งค์•ก์„ ์ตœ๋Œ€ํ•œ ๋Š˜๋ฆฐ๋‹ค
    • ์ฒซ๋ฒˆ์งธ ๋ชฉํ‘œ๊ฐ€ ์šฐ์„ ์ด๊ณ  ๋‘๋ฒˆ์งธ ๋ชฉํ‘œ๋Š” ๊ทธ ๋‹ค์Œ
  • n๋ช…์˜ ์นด์นด์˜คํ†ก ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ชจํ‹ฐ์ฝ˜ m๊ฐœ๋ฅผ ํ• ์ธํ•˜์—ฌ ํŒ๋งคํ•œ๋‹ค
    • ์ด๋ชจํ‹ฐ์ฝ˜๋งˆ๋‹ค ํ• ์ธ์œจ์€ ์ƒ์ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ• ์ธ์œจ์€ 10%, 20%, 30%, 40% ์ค‘ ํ•˜๋‚˜
  • ๊ฐ ์‚ฌ์šฉ์ž๋Š” ๋‹ค์Œ ๊ธฐ์ค€์„ ๋”ฐ๋ฅธ๋‹ค
    • ์ž์‹ ์˜ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ผ์ • ๋น„์œจ ์ด์ƒ ํ• ์ธํ•˜๋Š” ์ด๋ชจํ‹ฐ์ฝ˜์€ ๋ชจ๋‘ ๊ตฌ๋งคํ•œ๋‹ค
    • ๊ฐ ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค ๋น„์šฉ์˜ ํ•ฉ์ด ์ผ์ • ๊ฐ€๊ฒฉ ์ด์ƒ์ด ๋˜๋ฉด ์ด๋ชจํ‹ฐ์ฝ˜ ๊ตฌ๋งค๋ฅผ ๋ชจ๋‘ ์ทจ์†Œํ•˜๊ณ  ์ด๋ชจํ‹ฐ์ฝ˜ ํ”Œ๋Ÿฌ์Šค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•œ๋‹ค
  • 1<= users์˜ ๊ธธ์ด = n <= 100
    • users[i]๋Š” [๋น„์œจ, ๊ฐ€๊ฒฉ]
  • 1 <= emoticons์˜ ๊ธธ์ด = m <= 7
    • emoticons์˜ ์›์†Œ๋Š” 100์˜ ๋ฐฐ์ˆ˜

ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

1. ํ• ์ธ์œจ ๋ฐฐ์—ด์„ ์ •์˜ํ•œ๋‹ค

private static final int[] discounts = {10, 20, 30, 40};

2. ์กฐํ•ฉ์œผ๋กœ ์ด๋ชจํ‹ฐ์ฝ˜์— ํ• ์ธ์œจ์„ ๋ฐฐ์ •ํ•œ๋‹ค

private void genComb(int depth, int[] res, int[][] users, int[] emoticons) {
    if (depth == emoticons.length) {
        ...
        return;
    }

    for (int i = 0; i < discounts.length; i++) {
        res[depth] = discounts[i];
        genComb(depth + 1, res, users, emoticons);
    }
}

3. ๊ฐ ์กฐํ•ฉ์ด ์™„์„ฑ๋  ๋•Œ๋งˆ๋‹ค ์ตœ๋Œ€ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค

๊ฐ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ์ด๋ชจํ‹ฐ์ฝ˜์˜ ํ• ์ธ์œจ์„ ๋ฐฐ์ •ํ•œ ๊ฐ€๊ฒฉ์˜ ์ดํ•ฉ์„ ๊ณ„์‚ฐํ•˜๊ณ , ์ด ๊ฒฐ๊ณผ๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๊ธฐ์ค€๋˜๋Š” ๊ธˆ์•ก๋ณด๋‹ค ํฌ๋ฉด ๊ตฌ๋…์ž๋กœ ์„ผ๋‹ค

if (depth == emoticons.length) {
    int subs = 0, spentTotal = 0;
    for (int[] user : users) {
        int spent = 0;
        for (int i = 0; i < emoticons.length; i++) {
            if (res[i] >= user[0]) {
                spent += emoticons[i] * (100 - res[i]) / 100;
            }
        }
        if (spent >= user[1]) {
            subs ++;
        } else {
            spentTotal += spent;
        }
    }
    if (subs > subscribers) {
        subscribers = subs;
        profit = spentTotal;
    } else if (subs == subscribers) {
        profit = Math.max(profit, spentTotal);
    }
    return;
}

ํ™œ์ฃผ๋กœ ๊ฑด์„ค [SWEA]

unrated

ํ™œ์ฃผ๋กœ ๊ฑด์„ค JAVA ์ฝ”๋“œ

๋ฌธ์ œ ์ดํ•ด

  • N * N ํฌ๊ธฐ์˜ ์ ˆ๋ฒฝ์ง€๋Œ€์— ํ™œ์ฃผ๋กœ๋ฅผ ๊ฑด์„คํ•œ๋‹ค
    • ์…€์˜ ๊ฐ’์€ ๊ทธ ์ง€ํ˜•์˜ ๋†’์ด๋ฅผ ์˜๋ฏธํ•œ๋‹ค
  • ํ™œ์ฃผ๋กœ๋Š” ๋†’์ด๊ฐ€ ๋™์ผํ•œ ๊ตฌ๊ฐ„์— ๊ฑด์„ค์ด ๊ฐ€๋Šฅํ•˜๋‹ค
  • ๊ฒฝ์‚ฌ๋กœ๋Š” ๊ธธ์ด๊ฐ€ X, ๋†’์ด๊ฐ€ 1์ด๋‹ค
    • ๋†’์ด ์ฐจ์ด๊ฐ€ 1์ด๊ณ , ๋‚ฎ์€ ์ง€ํ˜•์˜ ๋†’์ด๊ฐ€ ๋™์ผํ•˜๊ฒŒ ๊ฒฝ์‚ฌ๋กœ์˜ ๊ธธ์ด๋งŒํผ ์—ฐ์†๋˜๋Š” ๊ณณ์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ๋™์ผํ•œ ์…€์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ฒฝ๋กœ๋ฅผ ๊ฒน์ณ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค
  • ํ™œ์ฃผ๋กœ๋ฅผ ๊ฑด์„คํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋ผ

ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

๊ฐ row์™€ column์— ๋Œ€ํ•ด ํ™œ์ฃผ๋กœ ๊ฑด์„ค์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•œ๋‹ค

1. ํ˜„์žฌ์™€ ๋‹ค์Œ ๋†’์ด๋ฅผ ๋น„๊ตํ•œ๋‹ค

2. ๋†’์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ฒฝ์‚ฌ๋กœ ๊ฑด์„ค ์—†์ด๋„ ํ™œ์ฃผ๋กœ ๊ฑด์„ค์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค

if(line[i] == line[i + 1]) continue;

3. ํ˜„์žฌ ๋†’์ด๊ฐ€ ๋‹ค์Œ ๋†’์ด๋ณด๋‹ค 1 ์ž‘์œผ๋ฉด ํ˜„์žฌ ๋†’์ด ํฌํ•จ X ๊ธธ์ด๋งŒํผ ์ „๊นŒ์ง€ ๊ณต๊ฐ„์— ๊ฒฝ์‚ฌ๋กœ๊ฐ€ ์„ค์น˜ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•œ๋‹ค

3-1. boolean[] used์— ๊ฒฝ์‚ฌ๋กœ ๊ฑด์„ค์— ์‚ฌ์šฉ๋œ ์…€์„ ํ‘œ์‹œํ•ด์„œ ํ•˜๋‚˜์˜ ์…€์— ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ฒฝ์‚ฌ๋กœ๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ๋ฐฉ์ง€ํ•œ๋‹ค

3-2. ์ธ๋ฑ์Šค๊ฐ€ 0๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋ฒ”์œ„ ๋ฐ–์œผ๋กœ ์‹คํŒจํ•œ๋‹ค
3-3. ๋†’์ด๊ฐ€ ๋‹ค๋ฅด๋ฉด ๊ฒฝ์‚ฌ๋กœ ๊ฑด์„ค์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค

else if(line[i] + 1 == line[i + 1]){
    for(int j = 0; j < X; j++){
        int idx = i - j;
        if(idx < 0 || line[idx] != line[i] || used[idx]){
            return false;
        }
        used[idx] = true;
    }
}

4. ํ˜„์žฌ ๋†’์ด๊ฐ€ ๋‹ค์Œ ๋†’์ด๋ณด๋‹ค 1 ํฌ๋ฉด ํ˜„์žฌ ๋†’์ด ํฌํ•จ X ๊ธธ์ด๋งŒํผ ํ›„๊นŒ์ง€ ๊ณต๊ฐ„์— ๊ฒฝ์‚ฌ๋กœ๊ฐ€ ์„ค์น˜ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•œ๋‹ค

4-1. 3-1์™€ ๋™์ผ
4-2. ์ธ๋ฑ์Šค๊ฐ€ N๋ณด๋‹ค ํฌ๊ฑฐ๊ฐ€ ๊ฐ™์œผ๋ฉด ๋ฒ”์œ„ ๋ฐ–์œผ๋กœ ์‹คํŒจํ•œ๋‹ค
4-3. 3-3์™€ ๋™์ผ
4-4. ํƒ์ƒ‰ ์ค‘์ธ i ์ธ๋ฑ์Šค๋ฅผ X-1 ๋งŒํผ ์ด๋™์‹œ์ผœ์„œ ๊ฒฝ์‚ฌ๋กœ ์ดํ›„๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๋„๋ก ํ•œ๋‹ค

else if(line[i] - 1 == line[i + 1]){
    for(int j = 1; j <= X; j++){
        int idx = i + j;
        if(idx >= N || line[idx] != line[i + 1] || used[idx]){
            return false;
        }
        used[idx] = true;
    }
    i += X - 1; 
}

5. 2, 3, 4 ๋‹จ๊ณ„์— ํ•ด๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด ๋†’์ด ์ฐจ๊ฐ€ 2์ด์ƒ์ด๋ฏ€๋กœ ๋†’์ด๊ฐ€ 1๋กœ ์ œํ•œ๋œ ๊ฒฝ์‚ฌ๋กœ๋„ ๋ณด์™„ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ฐจ์ด๋‹ค.


์ถฉ๋Œ์œ„ํ—˜ ์ฐพ๊ธฐ [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]

lvl 2

์ถฉ๋Œ์œ„ํ—˜ ์ฐพ๊ธฐ JAVA ์ฝ”๋“œ

๋ฌธ์ œ ์ดํ•ด

  • n๊ฐœ์˜ ํฌ์ธํŠธ๊ฐ€ ์กด์žฌํ•œ๋‹ค
    • 2 <= n <= 100
  • x๊ฐœ์˜ ๋กœ๋ด‡์ด ์กด์žฌํ•œ๋‹ค
    • i๋ฒˆ์งธ ๋กœ๋ด‡์€ routes[i]์˜ ๊ฒฝ๋กœ๋ฅผ ๊ฐ–๋Š”๋‹ค
    • ๊ฒฝ๋กœ๋Š” ํฌ์ธํŠธ์˜ ์ธ๋ฑ์Šค๋กœ ๊ตฌ์„ฑ๋œ๋‹ค (1~n)
  • ๋ชจ๋“  ๋กœ๋ด‡๋“ค์ด ์ž์‹ ์˜ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ์„œ ์ด๋™ํ•  ๋•Œ 2 ๊ฐœ ์ด์ƒ์˜ ๋กœ๋ด‡์ด ๊ฐ™์€ ์ขŒํ‘œ์— ์กด์žฌํ•˜๋ฉด ์ถฉ๋Œ ์œ„ํ—˜์ด๋‹ค
    • ๋กœ๋ด‡์€ ์ž์‹ ์˜ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ํ•œ ํฌ์ธํŠธ์—์„œ ๊ทธ ๋‹ค์Œ ํฌ์ธํŠธ๋กœ ์ด๋™ํ•˜๋Š”๋ฐ, ์ด ๋•Œ row๋จผ์ € ์›€์ง์ธ ๋‹ค์Œ col์„ ์›€์ง์ธ๋‹ค
  • ์ด ์ถฉ๋Œ ์œ„ํ—˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜์‹œ์˜ค

ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

1. ๊ฐ ๋กœ๋ด‡์˜ ์ƒ์„ธ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•œ๋‹ค

row ๋จผ์ € ์›€์ง์ด๋ฏ€๋กœ y๊ฐ’๋ถ€ํ„ฐ ๋ณ€๊ฒฝํ•˜๊ณ , ๊ทธ ๋‹ค์Œ x๊ฐ’์„ ๋ณ€๊ฒฝํ•œ๋‹ค

longestPath ๋ณ€์ˆ˜๋Š” staticํ•˜๊ฒŒ ๊ฐ€์žฅ ๊ธด ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋ฅผ ์ €์žฅํ•˜์—ฌ ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ๋™์‹œ์— ํƒ์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค

private List<int[]> findRoute(int[] route, int[][] points) {
    List<int[]> path = new ArrayList<>();
    int[] way = new int[route.length];
    for (int i =0 ; i < route.length; i++) {
        way[i] = route[i] -1;
    }

    int y = points[way[0]][0], x = points[way[0]][1];
    path.add(new int[] {y, x});
    for (int i = 1; i < route.length; i++) {
        int nextY = points[way[i]][0], nextX = points[way[i]][1];
        int[] move = new int[2];
        while (y != nextY) {
            if (y < nextY) {
                y ++;
                path.add(new int[] {y, x});
            } else {
                y --;
                path.add(new int[] {y, x});
            }
        }
        while (x != nextX) {
            if (x < nextX) {
                x ++;
                path.add(new int[] {y, x});
            } else {
                x --;
                path.add(new int[] {y, x});
            }
        }
    }
    longestPath = Math.max(longestPath, path.size());
    return path;
}

2. ๊ฒฝ๋กœ๋ฅผ ๋ชจ๋‘ ์ˆ˜ํ•ฉํ•œ ํ›„, ์‹œ๊ฐ„๋Œ€ ๋ณ„๋กœ ๊ฐ™์€ ์œ„์น˜์— ์กด์žฌํ•˜๋Š” ๋กœ๋ด‡์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค

public int solution(int[][] points, int[][] routes) {
    int answer = 0;


    List<List<int[]>> allRoutes = new ArrayList<>();
    
    // ๊ฐ ๋กœ๋ด‡์˜ ๊ฒฝ๋กœ์— ๋Œ€ํ•ด ์ƒ์„ธ ๊ฒฝ๋กœ๋ฅผ ์ˆ˜ํ•ฉํ•œ๋‹ค
    for (int[] route : routes) {
        allRoutes.add(findRoute(route, points));
    }
    
    // 0์ดˆ๋ถ€ํ„ฐ ๊ฐ€์žฅ ๊ธด ์ƒ์„ธ ๊ฒฝ๋กœ๊ฐ€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„๊นŒ์ง€ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ,

    for (int i = 0 ; i < longestPath; i++) {

        // ๊ฐ™์€ ์‹œ๊ฐ„๋Œ€์— ๊ฐ™์€ ์œ„์น˜์— ์กด์žฌํ•˜๋Š” ๋กœ๋ด‡์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค
		Map<Point, Integer> map = new HashMap<>();
        for (int j = 0; j < allRoutes.size();j++) {
            if (i >= allRoutes.get(j).size()) continue;
            int[] loc = allRoutes.get(j).get(i);
            Point p = new Point(loc[0], loc[1]);
            if (!map.containsKey(p)) map.put(p, 1);
            else map.put(p, map.get(p) + 1);
        }

        for (Map.Entry<Point, Integer> e : map.entrySet()) {
            if (e.getValue()>= 2) answer++;
        }
    }

    return answer;
}

Point ํด๋ž˜์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•œ๋‹ค

static class Point {
    int r, c;
    Point(int r, int c) {
        this.r =r;
        this.c=c;
    }

    @Override
    public boolean equals(Object o) {
        if (o == this) return true;
        Point p = (Point) o;
        if (p.r == this.r && p.c == this.c) return true;
        return false;
    }

    @Override
    public int hashCode() {
       return Objects.hash(r, c);
    }
}
profile
์šฐ๋‹นํƒ•ํƒ•

0๊ฐœ์˜ ๋Œ“๊ธ€

Powered by GraphCDN, the GraphQL CDN