Kim was born in Yangjae-dong, Seoul, South Korea, the son of Kevin and Jennifer Kim. He started swimming at the age of 10, despite that he did not like the sport much at first. He finally enjoyed the sport, when his family moved to Singapore and he trained for Mark Habel at the Singapore American School. He held school records in all individual events, and was eventually named the Most Valuable Swimmer of the Year by his school in 1994 and in 1995. Kim decided to return to his home South Korea in 1996, when he eventually became a member of the nation's swimming team. After graduating from Yangjae High School, Kim attended the University of Florida in Gainesville, Florida on an athletic scholarship, and competed for the Florida Gators swimming and diving team under head coach Gregg Troy from 1997 to 2000. While swimming for the Gators, he received five All-American honors, and placed fourth in the 400 m individual medley at the Southeastern Conference championships, with the school's sixth-fastest all-time record of 3:51.90.
International career
Kim made his first South Korean team, as a 17-year-old, at the 1996 Summer Olympics in Atlanta. There, he failed to reach the top 16 final in any of his individual events, finishing twenty-sixth in the 200 m individual medley, and twenty-first in the 400 m individual medley. At the 1998 FINA World Championships in Perth, Australia, Kim competed in three events, including the 200 m butterfly. In the 400 m individual medley, Kim missed the top 16 again by 0.08 of a second, but managed to pull off a seventeenth-place effort, as his best personal result, in a time of 4:30.91. In 1999, Kim entered his junior season for the Florida Gators, when he placed eighth in the same program at the U.S. Open in San Antonio, Texas, touching the wall in 4:30.19. Kim shortened his program at the 2000 Summer Olympics in Sydney, when he swam only in the 400 m individual medley. Swimming in heat three, he picked up a seventh seed by a 6.35-second margin behind winner Alexey Kovrigin in 4:28.56. Kim failed to reach the top 8 final, as he placed thirty-third overall on the second day of preliminaries. When his nation hosted the 2002 Asian Games in Busan, Kim won only a bronze medal, as a member of the South Korean team, in the 4×200 m freestyle relay. Kim also attempted for his first solo medal, but missed the podium twice in the 200 m individual medley, and 400 m individual medley by more than two seconds. At the 2004 Summer Olympics in Athens, Kim competed again in two swimming events, and also, served as a senior captainfor the South Korean swimming team. After reaching the top 16 final from the Summer Universiade in Daegu, his entry times of 2:05.43 and 4:25.40 were both officially accredited under a FINA B-standard. On the first morning of the Games, Kim placed twentieth in the 400 m individual medley, his best finish in an Olympic career. Swimming in heat two, he set a South Korean record of 4:23.05 to claim a second spot by a 4.50-second margin behind winner Dean Kent of New Zealand. In the 200 m individual medley, Kim participated in heat three against seven other swimmers, including fellow three-time Olympian Jacob Carstensen of Denmark. He edged out Philippines' Miguel Molina to take another second spot by 0.22 of a second in 2:05.06. Kim ended his third Olympic stint with a thirty-second place effort in the preliminaries.
Kim held a South Korean record in the 400 m individual medley from his third Olympics in 2004, until it was broken by Han Kyu-Chul at the Asian Games two years later.