Hello. I'm a third year college student who became a light blue coder the other day. The language is python, and I started it in June of last year (2019). I'm not very good at writing sentences, but I hope you'll see it till the end.
I entered university and started studying information systems, took basic information in October of the same year, applied information in April of the following year, and wondered what to study next, but a non-information system friend learned machine learning with python. I found that I was self-taught, and it's ridiculous. I started studying python. I knew the language python at the time, but I didn't know anything about the specific grammar, and at school I was learning a lesser-known language called Processing, so I remember feeling very impatient. If non-information undergraduate students start programming, their market value will drop! Then, I hurriedly built the environment and started studying grammar. However, although I can input properly, there is no scene to output, so I searched for other programming study sites such as Progate, but when I was wondering what happened because there was nothing that fits well, my friend on Twitter However (apart from the above friends), he replied, "Do you want to do competitive programming?" I replied, pretending to be calm, "What is that?" But it's definitely interesting, I love programming and I love competing with people. I searched with haste and found AtCoder. It didn't take long to get into the swamp of competitive programming from there. It became a machine to solve problems.
BFS, DFS, segment tree, DP, binary search, inverse element, UnionFind, Dijkstra, Worshall Floyd, etc. I used math in the exam, so I have a minimum knowledge. However, to be honest, I think that the only knowledge required to become light blue is binary search, BFS, and DFS. The rest is probably possible if you are conscious of solving it quickly and accurately. Blue is impossible this way.
In conclusion, I solved the problem. However, I don't think that efforts should always be directed in the wrong direction. It's either getting bored first or getting results first. The more passionate you are in competitive programming, the more you have to think about how to work. There are a few things to be aware of when solving a problem. In the following, I will put into words what I was conscious of.
Humans don't really remember what they don't need now. On the contrary, what is needed now often comes in smoothly. In other words, I think it is efficient to learn the algorithms that are needed now. If you solve a problem and find an algorithm you don't understand, study the algorithm to solve the problem. I'll do competitive programming after reading ant books and learning all the algorithms! You should probably quit.
After solving a problem, there are people who move on to the next problem without implementing it just because it was done in their head. Let's definitely stop this too. The first reason is probably that it can't be implemented. Many of the problems that are skipped without being implemented are heavy to implement, and it is probably difficult to implement them to the end without bugs. The second is inefficiency. There are two phases to solve the problem, the first is consideration. There is a phase to think about what kind of algorithm and data structure should be used to solve this problem, and a phase to actually put it into the code. As for the experience, there are many people around me who can do the first phase but not the second phase. In other words, there are many people who do not have enough practice in that part. Let's implement it. What we are doing is not a competition consideration contest.
As with anything, if you can't do BFS, you can't do it without solving the problem of BFS, and if you can't do DP, you can't do it without solving the problem of DP. It's natural. Fortunately, the problem is explained and should give you the knowledge you need to solve it. Let's solve the similar problems that you couldn't do.
If you have a problem that you do not understand even after reading the explanation, let's escape. As I wrote earlier, is it the first thing to get bored or the first to get results? Even if you can understand a problem that you cannot understand even if you read the explanation, I think that it may be one month or three months before you can solve it during the contest. If so, it's definitely faster to get results if you make sure you take the problem that you can read, understand, and implement. There is a word that I cherish in myself, and in the words of professional gamer Daigo Umehara, "I'm not tired of the game, I'm tired of not growing up." First of all, let's give top priority to being able to experience growth for yourself.
Can you concentrate on studying for 100 minutes from now on? I think that there are quite a few people who can answer YES when asked. But what about? When I entered the contest, I think I was very nervous. Isn't it so concentrated that it's impossible? I'm studying this density every week and I can't help but get a higher rate. Also, the problems that I couldn't solve during the contest are quite regrettable. It is highly recommended because you can solve the problem with a different motivation than when you solve the problem normally.
In my case, I was a senior and a professor, but it's okay if I don't want to lose to my friends or juniors. Competitive programming with someone is a lot of fun, and please cherish the regrettable feelings of losing.
It's been a long time, but thank you for reading. I think you should definitely use AtCoder when you start a new language. (I didn't get any money from AtCoder)
Recommended Posts