プログラマ-プリンタ
使用言語:python 3.7.4
❓ Problem
(繰り返し開始)キューの最初の要素p(リストの一番左側)を取り出します. pと待機リストの値のサイズを比較します. 待機リストの値がpより大きい場合 pをキューの最後に送信します. 領域が0に設定されている場合、領域設定値はlen-1に変更されます. 領域設定が0でない場合、領域設定値-1が設定されます. (繰り返し開始)に戻り、最初の要素を再び取り出してから繰り返し操作を開始します. 待機リストにpより大きな値がない場合 pをキューから取り出し、保存済みの印刷順序のリストarrに挿入します. の位置決め値が0の場合、arrの長さ(正しい)を返し、終了します. のロケーション値が0でなければ、ロケーション値-1になります. (繰り返し開始)に戻り、最初の要素を再び取り出してから繰り返し操作を開始します. 以下では,コードを記述する前に,上記の手順を首都コードとして記述する.
correct
📕 フィードバック
キュー、DEXを書くにはCollectionsモジュールをインポートします. Python DEQ用法:https://excelsior-cjh.tistory.com/962
big初期化が行われなかったため,無限ループに陥った.
を使用して、より高い価格があるかどうかを調べることができます.
カップル同士で大きさの比較ができます.サイズ比較は最初の要素から始まります.
arrに単独で保存せず、位置を特定すれば+1と答えることもできます.
メモリ管理では、後でarr長を返すよりも、anowerを1つ増やすごとに効率的です.
次は、他の人の解答を印刷し、どのように返すかを確認するコードです.
25-30分以内にアイデアを思いついた.
ノートに問題を解く過程を書いて、どのように問題を解くかを考えます.首都コードを作成した後、私の首都コードが欲しい答えを得たかどうか、手順に従って検討し、コードの作成に移りました.
コードに移動する時間は30分を超えています.
まず、PythonはQとDEXの使い方が分からないので、importから検索します.また,C++を用いる場合とpop()の動作過程が異なるため,push,popの戻り値やどの位置にアクセスする値などを知る必要がある.
早めに勉強してから解決すればいいと思います.
プログラマーレベル2の問題を早く解決したい
どうすればもっと早くアイデアを思いつくことができますか?
まず、多くの問題を解いて、他人のコードを真剣に分析しなければなりません.
❓ Problem
問題の説明
プログラムプリンタ
🚩 Solution
1.方法
資料構造キューを思い出しました.
ロケはリアルタイムになります.
位置決め要素が位置すると、その位置に戻り、終了します.
[具体的な手順]
1.方法
資料構造キューを思い出しました.
ロケはリアルタイムになります.
位置決め要素が位置すると、その位置に戻り、終了します.
[具体的な手順]
#반복
(1)처음 거를 뽑는다
대기열 확인
if 더 큰 값이 있으면
현재값을 가장 뒤로 보냄
if 로케이션이 0이였으면 len-1로 변경
else 로케이션 -1
else 더 큰 값이 없으면
pop,완성 리스트에 삽입
if 로케이션이 0이였으면
완성된 리스트 길이를 리턴하고 종료
else
로케이션 -1
다시 (1)로 돌아감
2.コード
from collections import deque
def solution(priorities, location):
arr = []
queue = deque(priorities)
while True:
p = queue[0]
big = 0 # big 초기화
for i in range(1, len(queue)):
if(p < queue[i]):
big = 1
break
if big == 1:
queue.append(p)
queue.popleft()
if location == 0:
location = len(queue) - 1
else:
location -= 1
continue
else:
arr.append(queue.popleft())
if location == 0:
answer = len(arr)
return answer
else:
location -= 1
continue
3.結果
採点結果
correct
じかんふくごうどぶんせき
📕 フィードバック
1.検索内容
from collections import deque
2.ミス
big初期化が行われなかったため,無限ループに陥った.
3、発展方向
any()
の代わりにany()
本物が1つあれば本物に戻ります.(逆に、all()
はすべてTrueでなければTrueに戻らない.)カップル同士で大きさの比較ができます.サイズ比較は最初の要素から始まります.
arrに単独で保存せず、位置を特定すれば+1と答えることもできます.
次は、他の人の解答を印刷し、どのように返すかを確認するコードです.
def solution(priorities, location):
queue = [(i,p) for i,p in enumerate(priorities)]
print("초기 큐:",queue)
answer = 0
while True:
print("<while 내부>")
cur = queue.pop(0)
print("cur =",cur)
print("팝한 후 큐 =", queue)
if any(cur[1] < q[1] for q in queue):
print("큰 값 있음, 맨 뒤로 보내기")
queue.append(cur)
else:
print("큰 값 없음, 위치 확정")
answer += 1
print("answer = ", answer)
if cur[0] == location:
print("location의 위치. 정답")
return answer
print()
print(solution([1,1,9,1,1,1],0))
4.感じ
25-30分以内にアイデアを思いついた.
ノートに問題を解く過程を書いて、どのように問題を解くかを考えます.首都コードを作成した後、私の首都コードが欲しい答えを得たかどうか、手順に従って検討し、コードの作成に移りました.
コードに移動する時間は30分を超えています.
まず、PythonはQとDEXの使い方が分からないので、importから検索します.また,C++を用いる場合とpop()の動作過程が異なるため,push,popの戻り値やどの位置にアクセスする値などを知る必要がある.
早めに勉強してから解決すればいいと思います.
プログラマーレベル2の問題を早く解決したい
どうすればもっと早くアイデアを思いつくことができますか?
まず、多くの問題を解いて、他人のコードを真剣に分析しなければなりません.
Reference
この問題について(プログラマ-プリンタ), 我々は、より多くの情報をここで見つけました https://velog.io/@sue1199842/프로그래머스-프린터テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol