🟣 였늘의 문제 정리

κΉ€νƒœμš±Β·2023λ…„ 8μ›” 30일
0

😭 문제 ν•₯짝 #1

[μ—˜λ¦¬μŠ€ SW μ—”μ§€λ‹ˆμ–΄ νŠΈλž™] 빼곑히 μ±„μš΄ μ‚Όκ°ν˜•

문제 μ„€λͺ…
빨간색, 녹색 λ˜λŠ” κ²€μ •μƒ‰μ˜ μƒ‰μƒμœΌλ‘œ 이루어진 행이 μžˆμŠ΅λ‹ˆλ‹€. 이 행을 μΌμ •ν•œ κ·œμΉ™μ„ 톡해 행이 μƒμ„±λ˜μ–΄ μ‚Όκ°ν˜•μ΄ μ™„μ„±λ©λ‹ˆλ‹€.

이전 ν–‰μ—μ„œ 두 쌍의 색상을 κ³ λ €ν•˜μ—¬ 각각 λ§ˆμ§€λ§‰ 행보닀 ν•˜λ‚˜ 적은 색상을 ν¬ν•¨ν•˜λŠ” 연속 행이 μƒμ„±λ©λ‹ˆλ‹€.

두 쌍의 색상이 λ™μΌν•˜λ©΄ μƒˆ 행에 λ™μΌν•œ 색상이 μ‚¬μš©λ˜κ³  μ„œλ‘œ λ‹€λ₯Έ 경우 λˆ„λ½λœ 색상이 μƒˆ 행에 μ‚¬μš©λ©λ‹ˆλ‹€. μ΄λŸ°μ‹μœΌλ‘œ 단 ν•˜λ‚˜μ˜ μƒ‰μƒλ§Œ μžˆλŠ” λ§ˆμ§€λ§‰ 행이 남을 λ•ŒκΉŒμ§€ μƒμ„±λ©λ‹ˆλ‹€.

예λ₯Όλ“€μ–΄ R R G B R G B B행을 μž…λ ₯ λ°›μœΌλ©΄ μ•„λž˜μ™€ 같은 μ‚Όκ°ν˜•μ΄ λ§Œλ“€μ–΄μ§‘λ‹ˆλ‹€. 맨 μ•„λž˜ 행에 λ‚˜νƒ€λ‚  색상을 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜μ„Έμš”.

R R G B R G B B
 R B R G B R B
  G G B R G G
   G R G B G
    B B R R
     B G R
      R B
       G

μ œν•œμ‚¬ν•­

  • μž…λ ₯ λ¬Έμžμ—΄μ—λŠ” λŒ€λ¬Έμž β€˜B’, β€˜G’ λ˜λŠ” β€˜Rβ€™λ§Œ ν¬ν•¨λ˜μ–΄μ•Ό ν•œλ‹€.
  • μž…λ ₯ λ¬Έμžμ—΄μ˜ κΈΈμ΄λŠ” μ΅œμ†Œ 2κΈ€μž 이상이닀.

μž…μΆœλ ₯ 예

dotsresult
'RRGBRGBB''G'
'RBRGB''B'

μ§€μ‹œμ‚¬ν•­

  • μ‚Όκ°ν˜•μ˜ 첫 번째 행이 λ¬Έμžμ—΄λ‘œ 주어지고 맨 μ•„λž˜ 행에 λ¬Έμžμ—΄λ‘œ λ‚˜νƒ€λ‚  μ΅œμ’… 색상을 λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜μ„Έμš”.

λ‚˜μ˜ 풀이

function triangle(row) {
  // row == 'RBRGB'
  while (row.length > 1) {
    let tempStr = '';
    for (let i = 0; i < row.length - 1; i++) {
      tempStr += color(row[i], row[i + 1]);
    }                  // R        B
    row = tempStr;
  }         // GGBR
            // GRG
            // BB
            // B
  return row;
}

function color(c1, c2) {
  const colors = ['B', 'G', 'R'];
  if (c1 === c2) {
    return c1;
  } else {
    return colors.filter(c => c !== c1 && c !== c2)[0];
  }
}

console.log(triangle('RBRGB'));

module.exports = { triangle };

πŸ’‘ μž…/좜λ ₯ μ ‘κ·Ό
1. input String(row)의 쑰건을 μΆ©μ‘±ν•˜λŠ”μ§€ ν™•μΈν•˜μ„Έμš”.
쑰건: μž…λ ₯ λ¬Έμžμ—΄μ—λŠ” λŒ€λ¬Έμž β€˜B’, β€˜G’ λ˜λŠ” β€˜Rβ€™λ§Œ ν¬ν•¨λ˜μ–΄μ•Ό ν•œλ‹€.
2. μ§€μ‹œμ‚¬ν•­μ˜ κ·œμΉ™λ°λ‘œ 두 쌍의 색을 λΉ„κ΅ν•΄μ„œ μƒˆλ‘œμš΄ 색상을 λ°˜ν™˜ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.
3. 기쑴의 행보닀 1만큼 짧아진 행을 μƒμ„±ν•˜κ³  color()ν•¨μˆ˜λ‘œ λŒ€μ²΄λœ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•˜μ„Έμš”.

=> 두 ν•¨μˆ˜λ₯Ό ν‚€μ›Œλ“œλ‘œ μ‚¬μš©ν•΄μ„œ 닡을 λ°˜ν™˜ ν•΄μ•Όν•˜λŠ” ν•¨μˆ˜μ— ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό μ μš©ν•˜λŠ” μ‹μœΌλ‘œ μ ‘κ·Όν•΄μ•Ό ν–ˆμ—ˆλ‹€..
μ•Œκ³ λ¦¬μ¦˜ 문제 해결에 μžˆμ–΄μ„œλŠ” 처음 μ ‘ν•˜λŠ” μ ‘κ·Όμ‹μ΄μ—ˆμ–΄μ„œ κ²°κ΅­ 해닡을 λ΄μ•Όν–ˆλ˜,,

μΌκΈ‰κ°μ²΄λ‘œμ„œ ν•¨μˆ˜λ“€λ₯Ό μ‚¬μš©ν•˜λŠ” 방법을 μ΅μˆ™ν•΄μ Έμ•Όκ² λ‹€λŠ” 생각이 가득..γ… γ… 

profile
방법을 연ꡬ할 쀄 μ•„λŠ” 개발자!

0개의 λŒ“κΈ€