Skip to content

[Leetcode] 704. Make The String Great โ€‹

#๋ฌธ์ž์—ด

Problem โ€‹

๋ฌธ์ œ ๋งํฌ

๋ฌธ์ž์—ด์ด ์ฃผ์–ด์งˆ๋•Œ ์„œ๋กœ ์ธ์ ‘ํ•œ ๋ฌธ์ž๊ฐ€ ๋Œ€๋ฌธ์ž์™€ ์†Œ๋ฌธ์ž์ด๋ฉด์„œ ๊ฐ™์€ ์•ŒํŒŒ๋ฒณ์ด๋ฉด ์ œ๊ฑฐํ•˜๋ฉด์„œ ์ตœ์ข… ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ

ex) leEeetcode => leetcode ex) abBAcC => "" ex) "kkdsFuqUfSDKK" => "kkdsFuqUfSDKK"

Solution โ€‹

  1. ๋ฌธ์ž์—ด์„ ์ˆœํšŒ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
  2. ๊ฐ€์‚ฐ๊ธฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.
    • ์ฃผ์–ด์ง„ c์™€ ๊ฐ€์‚ฐ๊ธฐ์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๊ฐ€ ์„œ๋กœ ๋Œ€์†Œ๋ฌธ์ž์ธ์ง€ ์กฐ๊ฑด์„ ํ†ตํ•ด ๊ตฌ๋ณ„ํ•œ๋‹ค.
    • ๊ฐ™์€ ์•ŒํŒŒ๋ฒณ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  3. ์œ„ ์กฐ๊ฑด์— ์ผ์น˜ํ•˜๋ฉด ๊ฐ€์‚ฐ๊ธฐ์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.
  4. ์œ„ ์กฐ๊ฑด์— ์ผ์น˜ํ•˜์ง€์•Š์œผ๋ฉด ๊ฐ€์‚ฐ๊ธฐ์— c(๋ฌธ์ž)๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

TS Code โ€‹

ts
function makeGood(s: string): string {
  const isUpperCase = (c: string) => c === c.toUpperCase()
  const isLowerCase = (c: string) => c === c.toLowerCase()
  return Array.from(s).reduce((acc: string, c: string, i: number) => {
    const lastChar = acc[acc.length - 1]
    if (!acc) return c
    if (((isUpperCase(lastChar) && isLowerCase(c)) || (isUpperCase(c) && isLowerCase(lastChar))) && c.toUpperCase() === lastChar.toUpperCase()) return acc.slice(0, -1)
    return acc + c
  })
}