[プログラマー]英語のドラゴンボールC+-文字列
🧐質問する
https://programmers.co.kr/learn/courses/30/lessons/12981
1番からn番までのn人は英語の言葉でドラゴンボールをしています英語のドラゴンボールのルールは以下の通りです.
1番から数字順に単語を話す
最後の人が単語を言ったら、1番から始めます.
前に会った人が言った単語の最後の文字で始まる単語を言います.
以前に現れた言葉は使用できません.
一字であることを認めない単語
次は3人で言葉でドラゴンボールを遊ぶ場合です.
tank → kick → know → wheel → land → dream → mother → robot → tank
言葉の接頭辞を続けると、3番の人物が自分の3番目の順番で言ったtankという言葉は以前に出てきた単語だから淘汰されます.
人の数nと人が順番に言った単語をパラメータとする場合は、解法関数を完了し、最初に淘汰された人の番号とその人が自分の何回目に淘汰された後に戻るかを求めてください.
🐥解き方
이전 단어의 마지막 문자
と현재 단어의 첫 문자
が同じであることを確認するmap
、<word,1>
というようにキーに単語を入れ、値に1を入れます.map[word] != 0
でなければ、すでに存在していることを意味します.コード#コード#
#include <string>
#include <vector>
#include <iostream>
#include <map>
using namespace std;
vector<int> solution(int n, vector<string> words) {
map<string,int> map;
map[words[0]]++;
for(int i = 1; i < words.size(); i++) {
if(map[words[i]] || words[i].front()!= words[i-1].back())
return {(i%n)+1,(i/n)+1};
map[words[i]]++;
}
return {0,0};
}
🕶振り返る
重複は存在せず、setを利用しようとしたばかりです.あまり複雑ではないことに気づきました.文字列なので、ベクトルの前後を利用すると、簡単に思い出せません.
Reference
この問題について([プログラマー]英語のドラゴンボールC+-文字列), 我々は、より多くの情報をここで見つけました https://velog.io/@ddyy094/프로그래머스-영어-끝말잇기-C-문자열テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol