[JavaScript] leetCode : Longest Common Prefix
728x90

๋ฌธ์ œ

Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string "".

ํ•œ ๋‹จ์–ด๊ฐ€ ์š”์†Œ์ธ ๋ฐฐ์—ด์ด ์ฃผ์–ด์งˆ ๋•Œ, ์š”์†Œ์˜ ๋ฌธ์ž์—ด์—์„œ ์กด์žฌํ•˜๋Š” ๊ฐ€์žฅ ๊ธด ์ ‘๋‘์‚ฌ๋ฅผ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
์—†๋‹ค๋ฉด ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜.

 

 

ํ’€์ด

const longestCommonPrefix = (strs) => {
  if (strs.length === 0) return '';
  if (strs.length === 1) return strs[0];

  let prefix = '';
  let prev = '';
  for (let i = 0; i < strs[0].length; i++) {
    prev = prefix;
    prefix += strs[0][i];

    for (let j = 0; j < strs.length; j++) {
      if (!strs[j].startsWith(prefix)) return prev;
    }
  }

  return prefix;
};

๋จผ์ € ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜์–ด์˜จ ์ธ์ž์˜ ๊ธธ์ด๊ฐ€ 0์ด๊ฑฐ๋‚˜ ์š”์†Œ๊ฐ€ 1๊ฐœ๋ฐ–์— ์—†๋Š” ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ–ˆ๋‹ค.

์ƒ๊ฐํ•œ ๋ฐฉ์‹์€ ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ์š”์†Œ์˜ ๊ธ€์ž๋ฅผ ํ•˜๋‚˜์”ฉ ๋–ผ์–ด์™€ ๋ˆ„์ ํ•˜๋ฉด์„œ
๋‹ค๋ฅธ ์š”์†Œ๋“ค์˜ ์•ž๊ธ€์ž์™€ ๋™์ผํ•œ์ง€ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ ‘๋‘์‚ฌ๋ฅผ ๋ˆ„์ ํ•˜๋Š” prefix ๋ณ€์ˆ˜์™€ ์ด์ „ ์ ‘๋‘์‚ฌ๋ฅผ ์ €์žฅํ•˜๋Š” prev ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์„œ,
prefix๋Š” ์ฒซ๋ฒˆ์งธ ์š”์†Œ์˜ ํ•œ ๊ธ€์ž์”ฉ์„ ๊ณ„์†ํ•ด์„œ ๋ˆ„์ ํ•˜๋ฉฐ ์—…๋ฐ์ดํŠธ ํ•˜๋„๋ก ํ–ˆ๋‹ค.

startsWith ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ ‘๋‘์‚ฌ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ด์ „๊นŒ์ง€ ๋ˆ„์ ๋œ ๋ณ€์ˆ˜ prev๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

๋‹ค๋ฅธ ํ’€์ด

var longestCommonPrefix = function(strs) {
    let prefix = '';
    if (strs.length === 1) return strs[0];
    for (let i = 0; i < strs[0].length; i++) {
        let currentChar = strs[0][i];
        if (currentChar && strs.every((s) => s[i] == currentChar)) {
            prefix += currentChar;
        } else {
            return prefix;
        }
    }

    return prefix;
};

every ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.
๊ฐ๊ฐ์˜ ๊ธ€์ž๋“ค์ด ํ˜„์žฌ ๋ˆ„์  ๊ธ€์ž์ธ currentChar์™€ ๊ฐ™์€์ง€ ํ™•์ธํ•ด์„œ, ์ฐธ์ธ ๊ฒฝ์šฐ์—๋งŒ ๋ˆ„์ ํ•œ๋‹ค.
์กฐ๊ฑด์„ ์ถฉ์กฑํ•  ๋•Œ๋งŒ ๋ˆ„์ ํ•œ๋‹ค๋Š” ์กฐ๊ฑด์ด ์ข€ ๋” ํšจ์œจ์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.
์†๋„ ๋ฉด์—์„œ๋Š” ๋‚˜์˜ ํ’€์ด๋ณด๋‹ค ์‚ด์ง ๋น ๋ฅธ ์ •๋„.

 

์›๋ฌธ์€ ์•„๋ž˜์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

https://leetcode.com/explore/learn/card/array-and-string/203/introduction-to-string/1162/discuss/1410235/Javascript-simple-solution

 

 

 


๐Ÿคธ‍โ™€๏ธ๐Ÿคธ‍โ™€๏ธ๐Ÿคธ‍โ™€๏ธ๐Ÿคธ‍โ™€๏ธ๐Ÿคธ‍โ™€๏ธ๐Ÿคธ‍โ™€๏ธ

๋ฐฉ๋ฌธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ™Œ

ํฌ์ŠคํŒ…๋“ค์€ ๊ณต๋ถ€์ค‘์ธ ๋‚ด์šฉ์„ ๊ธ€๋กœ ์ž‘์„ฑํ•œ ๊ฒƒ์ด๋ผ ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ์œผ๋‹ˆ ์ฐธ๊ณ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. 

๋ถ€์กฑํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ฝ”๋ฉ˜ํŠธ๋Š” ์–ธ์ œ๋‚˜ ํ™˜์˜์ž…๋‹ˆ๋‹ค.

์ข‹์€ ํ•˜๋ฃจ ๋˜์„ธ์š”, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ™‚

 

 

728x90

'๐Ÿ““ Algorithm > LeetCode' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JavaScript] leetCode : Reverse Words in a String  (0) 2022.05.16
[JavaScript] leetCode : Implement strStr()  (0) 2022.05.12
[JavaScript] leetCode : Linked List Cycle II  (3) 2022.05.03
[JavaScript] leetCode : Valid Mountain Array  (3) 2022.05.02
[JavaScript] LeetCode : Add Binary  (0) 2022.04.22