고맙다 is adjective. So you say "고맙+습니다".
감사하다 means '고맙게 여기다'. So you say "감사+합니다". These two are totally same in terms of usage. Either one is fine. But 감사합니다 is from Chinese characters 감사(感謝)' So thesedays many announcers on TV news say 고맙습니다 more than 감사합니다. Because 고맙습니다 is pure Korean words. :)
We usually say 미안하다(미안해, 미안해요) to close friends or family or younger generation(age-wise) in casual conversation.
죄송하다, However, we use it in official or formal situations. People tend to think 죄송합니다 is more polite than 미안합니다.
I hope you understand my English~ and this helps your Korean study as well. :) keep it up~화이팅!