【At Corder】 【초보자】 ABC081B - Shift only를 Ruby로 풀어 보았습니다.

소개



AtCoder 에 등록하면 다음에 하는 것 ~ 이것만 풀면 충분히 싸울 수 있다! 과거문정선 10문 ~ - Qiita

이 기사를 참고로 초보자가 At corder에 도전합니다.
목적은 취업 활동에서의 코딩 테스트 대책입니다.
매일 1문을 목표로 하여 갑자기 옵니다

모르는 것은 조사하는 정신입니다. 조금이라도 모르겠다, 라고 생각한 것은 조사해 해설과 참고문헌을 올리므로, 같은 내용으로 모르는 사람이 있으면 참고로 해 주세요

문제 ABC081B - Shift only



N개의 양의 정수 $A_1 ​​,...,A_N$가 있다. 이 정수가 모두 짝수이면 모든 정수를 2로 나눈 값으로 바꿉니다. 최대한 여러 번 조작 할 수 있는지 묻습니다.

입력 출력



입력


N
A1 A2 ... An

출력



최대로 몇 번 조작 할 수 있는지 출력하라.

입력 예


3
8 12 40

출력 예


2

첫 번째 [4,6,10], 두 번째 [2,3,5]가되고 홀수가 나타나기 때문에 대답은 2입니다.

답변


N=gets.to_i
numbers=gets.chomp.split(" ").map(&:to_i)
min = 99

numbers.each do |sum|
  count = 0
  while sum % 2 == 0 do
    count = count + 1
        sum = sum/2
  end

    if (count < min ) then
        min = count:confused:
    end

end

puts min


해설



N은 입력을 수락했지만 프로그램 중에는 사용하지 않았습니다.

받은 숫자를 각각 짝수인지 판단하고, 짝수라면 count를 +1하고, 대상의 값을 2로 한다. count의 숫자가 가장 작은 것을 min에 저장하고 그것을 출력한다.

감상



여기에서 어려워졌습니다. 문제문을 읽은 단계에서는 최소값을 출력한다는 발상은 나오지 않았습니다. 프로그래밍 같다!
처음 sum을 A로 했지만 오류가 발생했습니다. 왜 안 되었습니까? . 아는 분이 계시다면 가르쳐 주시면 기쁩니다
end의 위치를 ​​puts ~의 뒤로 하고 있었기 때문에, 출력이 실수하고 있었습니다. 조심하자!

참고문헌 Array 클래스

Array#each (Ruby 3.0.0 참조 설명서)

Atcoder Beginners Selection을 Ruby로 풀어 보았다 - Kasasagi's memorandum

[AtCoder]ABC081B - Shift only [Ruby]

좋은 웹페이지 즐겨찾기