プログラミングの腕を磨くべく、AtCoderといった競技プログラミングの問題に対する解答を実装しています。
(初心者なのでまだACになるのに時間がかかります)
例えばある問題に対して下記の様なコードを提出した結果、
テストケース16シナリオのうち、13シナリオがAC(OK)、3シナリオがタイムオーバーとなります。
(最初はもう少しタイムオーバーシナリオがあったのですが、for文をwhile文にしたりして改善していきました)
ですが、ここらへんで詰まっています。
「ここの書き方をこうすれば改善できるよ!」といった助言を頂ければ幸いです。
ruby
1 2matrix = gets.chomp.split(' ') 3line = readlines 4len = line.length 5 6i = 0 7while i < len 8 line[i] = line[i].split(' ').map(&:to_i) 9 i += 1 10end 11 12answer = Array.new(matrix[0].to_i*matrix[1].to_i, 0) 13h_sum = Array.new(matrix[1].to_i,0) 14tmp_h = 0 15while tmp_h < matrix[1].to_i 16 tmp_w = 0 17 while tmp_w < matrix[0].to_i 18 h_sum[tmp_h] += line[tmp_w][tmp_h] 19 tmp_w += 1 20 end 21 tmp_h += 1 22end 23 24i = 0 25w_sum = 0 26cnt = 0 27while i < line.length 28 h_word = "" 29 w_sum = line[i].sum 30 j = 0 31 while j < line[i].length 32 answer[cnt] = h_sum[j] - line[i][j] + w_sum 33 h_word = "#{h_word} #{answer[(i*matrix[1].to_i)+j]}" 34 cnt += 1 35 j += 1 36 end 37 puts h_word 38 i += 1 39end 40
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。