[PG]JOYSTIC
“JOY STIC”-Lv2
🎲問題の説明
JOYSTICでアルファベット名を完成最初はAのみで構成されていました
ex)完成する名前は3文字AAA、4文字AAAAAA
JOYロッドを各方向に移動し、以下のようにします.
▲-次の文字
▼-前の文字(AからZへ下へ)
◀-カーソルを左に移動します(最初の位置から最後の文字にカーソルを左に移動します).
▶-カーソルを右に移動(最後の位置から右に移動し、最初の文字上にカーソルを置く)
たとえば、次の方法でJAZを作成できます.
したがって、11回移動して「JAZ」を作成することができます.これは最小の移動です.
🔒せいげんじょうけん
namereturn"JEROEN"56"JAN"23
📓計画問題の理解と解答
」」」」」」」」」」」
最後にチェックしたA...A移動は不要です.(全ての位置検査、移動回数xは不要)
▼0番目の位置から右または①に、左(後ろ)②に移動します.
質問に答えるときは右か左の場合、真ん中A...Aというところがあれば行きの道から途中のAに戻って…Aを通らないところがある方法が…!文字で書こうとすると、解釈がはっきりしないようです(ㅠㅠ)
プログラマーの質問を見ると
name
の場合はA
に移動する回数が最も少ない.」
"AABAAAAABBB"
右折、元の道を戻り、逆方向に進む方法③」
0->1->2->1->0->10->9->8
逆行して元の道に戻り、前向きに進む方法④✍🏻私のコード2+正しいコード
class Solution {
public int solution(String name) {
// 돌리는 횟수
int rotate = 0;
for(int i=0; i<name.length(); i++) {
if(name.charAt(i) != 'A') {
rotate += Math.min((((int) name.charAt(i)) - 65), (91 - (int) name.charAt(i)));
}
}
// 정방향
int idx_f = 0;
for(int i=name.length()-1; i>=0; i--) {
if(name.charAt(i) != 'A') {
idx_f = i;
break;
}
}
int min = Integer.MAX_VALUE;
int move = 0;
for(int i=0; i<idx_f; i++) {
move += 1;
}
min = Math.min(min, move);
// 역방향
int idx_b = 0;
for(int i=1; i<name.length(); i++) {
if(name.charAt(i) != 'A') {
idx_b = i;
break;
}
}
move = 0;
for(int i=name.length()-1; i>=idx_b; i--) {
move += 1;
}
min = Math.min(min, move);
// 다시 되돌아가는 경우 (중간에 존재하는 A를 모두 검사)
int start, end;
for(int i=0; i<name.length(); i++) {
if(name.charAt(i) == 'A') {
start = i;
for(int j=start+1; j<name.length(); j++) {
if(name.charAt(j) != 'A') {
end = j-1;
move = checkA(start, end, name.length()-1);
break;
}
}
}
min = Math.min(min, move);
}
return rotate+min;
}
public static int checkA(int start, int end, int l) {
int move = 0;
if(start == 0) start = 1;
// 정방향 후 역방향
move = (start-1)*2 + (l-end);
// 역방향 후 정방향
move = Math.min(move, (l-end)*2 + start-1);
return move;
}
}
💡ケースを共有する前に、漠然と考えているだけでは、思考の数が非常に多く、複雑だと感じますが、文字で一つ一つ状況の数を計算するのは、書くのは難しくありません.頭が複雑なときは、文字で丁寧に記録する習慣をつけましょう.
Reference
この問題について([PG]JOYSTIC), 我々は、より多くの情報をここで見つけました https://velog.io/@bokiri409/PG-조이스틱テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol