ν‹°μŠ€ν† λ¦¬ λ·°

문제

ν˜„μˆ˜λŠ” 1λ…„ κ³Όμ •μ˜ μˆ˜μ—…κ³„νšμ„ μ§œμ•Ό ν•©λ‹ˆλ‹€.


μˆ˜μ—…μ€‘μ—λŠ” ν•„μˆ˜κ³Όλͺ©μ΄ μžˆμŠ΅λ‹ˆλ‹€. 이 ν•„μˆ˜κ³Όλͺ©μ€ λ°˜λ“œμ‹œ μ΄μˆ˜ν•΄μ•Ό ν•˜λ©°, κ·Έ μˆœμ„œλ„ μ •ν•΄μ Έ μžˆμŠ΅λ‹ˆλ‹€.
λ§Œμ•½ 총 κ³Όλͺ©μ΄ A, B, C, D, E, F, Gκ°€ 있고, μ—¬κΈ°μ„œ ν•„μˆ˜κ³Όλͺ©μ΄ CBA둜 주어지면 ν•„μˆ˜κ³Όλͺ©μ€ C, B, Aκ³Όλͺ©μ΄λ©° 이 μˆœμ„œλŒ€λ‘œ κΌ­ μˆ˜μ—…κ³„νšμ„ μ§œμ•Ό ν•©λ‹ˆλ‹€.
μ—¬κΈ°μ„œ μˆœμ„œλž€ Bκ³Όλͺ©μ€ Cκ³Όλͺ©μ„ μ΄μˆ˜ν•œ 후에 λ“€μ–΄μ•Ό ν•˜κ³ , Aκ³Όλͺ©μ€ C와 Bλ₯Ό μ΄μˆ˜ν•œ 후에 λ“€ μ–΄μ•Ό ν•œλ‹€λŠ”κ²ƒμž…λ‹ˆλ‹€.


ν˜„μˆ˜κ°€ C, B, D, A, G, E둜 μˆ˜μ—…κ³„νšμ„ 짜면 μ œλŒ€λ‘œ 된 μ„€κ³„μ΄μ§€λ§Œ C, G, E, A, D, B μˆœμ„œλ‘œ μ§°λ‹€λ©΄ 잘 λͺ» μ„€κ³„λœ μˆ˜μ—…κ³„νšμ΄ λ©λ‹ˆλ‹€.
μˆ˜μ—…κ³„νšμ€ κ·Έ μˆœμ„œλŒ€λ‘œ μ•žμ— μˆ˜μ—…μ΄ 이수되면 λ‹€μŒ μˆ˜μ—…μ„ μ‹œμž‘ν•˜λ‹€λŠ” κ²ƒμœΌλ‘œ ν•΄μ„ν•©λ‹ˆλ‹€. μˆ˜μ—…κ³„νšμ„œμƒμ˜ 각 κ³Όλͺ©μ€ 무쑰건 μ΄μˆ˜λœλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. ν•„μˆ˜κ³Όλͺ©μˆœμ„œκ°€ 주어지면 ν˜„μˆ˜κ°€ μ§  N개의 μˆ˜μ—…μ„€κ³„κ°€ 잘된 것이면 “YES", 잘λͺ»λœ 것이면 ”NO“λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

 

λ¬Έμ œν’€μ΄

  • 큐에 μˆ˜μ—…κ³„νšμ„ μˆœμ„œλŒ€λ‘œ μ €μž₯
  • μˆ˜μ—…κ³„νšμ΄ μ €μž₯된 큐λ₯Ό μˆœνšŒν•˜λ©΄μ„œ ν•„μˆ˜κ³Όλͺ©μΌ μ‹œ frontμ—μ„œ μ‚­μ œν•˜κ³  rear에 λ‹€μ‹œ μ €μž₯
  • ν•„μˆ˜κ³Όλͺ©μ΄ 아닐 κ²½μš°μ—λŠ” κ·ΈλŒ€λ‘œ frontμ—μ„œ μ‚­μ œ
  • λ§ˆμ§€λ§‰μ— 남은 3개의 ν•„μˆ˜κ³Όλͺ©μ„ λ¬Έμžμ—΄λ‘œ λ°˜ν™˜ν•˜μ—¬ 이수 μˆœμ„œκ°€ λ˜‘κ°™μ€μ§€ 비ꡐ

μ½”λ“œ

function solution(order, curr) {
  let answer = "YES";
  let queue = Array.from(curr); //μˆ˜μ—…κ³„νš 배열에 μ €μž₯

  for (let i = 0; i < queue.length; i++) {
    if (order.includes(queue[i])) { //ν•„μˆ˜κ³Όλͺ©μΌ 경우
      queue.push(queue.shift());
      i--; //μš”μ†Œκ°€ μ•žμœΌλ‘œ ν•˜λ‚˜μ”© 당겨지기 λ•Œλ¬Έμ— 인덱슀 λ˜ν•œ 1κ°μ‚°ν•˜μ—¬ μ •μƒμ μœΌλ‘œ κ·Έ λ‹€μŒ 인덱슀 μš”μ†Œλ₯Ό μ°Έμ‘°μΌ€ 함
    } else { //ν•„μˆ˜κ³Όλͺ©μ΄ 아닐 경우
      queue.shift();
      i--;
    }
    if (queue.length === order.length) break; //ν•„μˆ˜ κ³Όλͺ©λ§Œ λ‚¨μ•˜μ„ 경우
  }

  if (queue.join("") !== order) answer = "NO";
  return answer;
}

console.log(solution("CBA", "CBDAGE"));

function solution(need, plan){
  let answer="YES";
  let queue=need.split(''); 
  for(let x of plan){
      if(queue.includes(x)){
          if(x!==queue.shift()) return "NO"; 
      }
  }
  if(queue.length>0) return "NO"; //λ§Œμ•½μ— μˆ˜μ—…κ³„νšμ— ν•„μˆ˜κ³Όλͺ©μ΄ ν•˜λ‚˜λΌλ„ ν¬ν•¨λ˜μ§€ μ•Šμ•˜μ„ 경우
  return answer;
}

let a="CBA";
let b="CBDAGE";
console.log(solution(a, b));

'μ•Œκ³ λ¦¬μ¦˜ > νƒœκ·Έ 별 풀이' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

버블 μ •λ ¬  (0) 2021.07.18
선택 μ •λ ¬  (0) 2021.07.17
[큐]곡주 κ΅¬ν•˜κΈ°  (0) 2021.07.15
ν›„μœ„μ‹ μ—°μ‚°(postfix)  (0) 2021.07.13
κ΄„ν˜Έλ¬Έμžμ œκ±°  (0) 2021.07.11
λŒ“κΈ€
곡지사항
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€
Total
Today
Yesterday
링크
TAG
more
Β«   2024/10   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
κΈ€ 보관함