1. A memory controller, comprising: a request queue that stores requests provided by an external device; a scheduler that calculates a score for each of the requests stored in the request queue and determines a processing order of the requests based on the scores for the requests; and a weight generation circuit that generates a weight vector including weights used to calculate the scores, wherein the scheduler calculates the score by combining a plurality of variables and the weight vector, the plurality of variables varying with a request, the weight vector being common to the requests, wherein the scheduler determines values of the plurality of variables according to a state of the request queue or a state of each of the requests, and wherein the weight generation circuit adjusts the weight vector based on an operation state of the memory controller or a weight control signal when information of the request queue is updated.