ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 배운것과 내가 아는것은 다르구나......
    살아가면서/생각하면서 2012. 3. 23. 00:17
    반응형

    요새 회사에서 진행하는것 때문에 틈나는대로 Ruby를 보고 있다.

    또 배우는김에 이번에 알고스팟에서 Ruby로도 문제를 풀수있게 되서 한번 해봤다.

     

    문제 url : http://algospot.com/judge/problem/read/DRAWRECT

    문제를 봤을때 더하고 빼고 해면 될것 같았는데 잘 안됐고, sort 남발, 경우의수 다 집어 넣어서 억지로 정답! 을 얻었다.

     

    그 코드는.....후덜덜

    
    Integer(gets).times{
            x = []
            y = []
            3.times {
                    inputs = gets.chomp
                    if inputs.respond_to?("split")
                            input = inputs.split
                            x.push(input[0].to_i)
                            y.push(input[1].to_i)
                    end
            }
    
            x = x.sort
            y = y.sort
            selectX = 0
            selectY = 0
            firstX = 0
            firstY = 0
            x.each do |number|
                    if selectX == 0
                            selectX = number
                            firstX = number
                            next
                    end
    
                    if selectX == number
                            selectX = 0
                    elsif selectX != number
                            selectX = number
                    end
            end
    
            y.each do |number|
                    if selectY == 0
                            selectY = number
                            firstY = number
                            next
                    end
    
                    if selectY == number
                            selectY = 0
                    elsif selectY != number
                            selectY = number
                    end
            end
            if selectX == 0
                    selectX = firstX
            end
            if selectY == 0
                    selectY = firstY
            end
            puts "#{selectX} #{selectY}"
    }
    

    정답을 맞추면 다른사람들은 어떻게 했는지 볼수있는데,

    아~~~~~~~~~~~~~!!!! XOR연산~!!그때  parity check가 생각이 났다.....

    이미 난 배운건데 정작 써먹어야할때는 생각이 나지않았다.

    
    Integer(gets).times{
    
            selectX = 0
            selectY = 0
            3.times {
                    inputs = gets.chomp
                    if inputs.respond_to?("split")
                            input = inputs.split
                            selectX ^= input[0].to_i
                            selectY ^= input[1].to_i
                    end
            }
            puts "#{selectX} #{selectY}"
    }
    


    수행시간은 왜 처음것이 빠르지?;;;

    내게 도움이 될만한 무엇인가를 배웠다면, 내것으로 꼭~!! 만들자~!!

    반응형

    댓글

Designed by Tistory.