가정법 과거완료 공식: If + had p.p., would have p.p.
if절에는 had와 과거분사를, 주절에는 조동사 과거형과 have p.p.를 둡니다. 과거분사(p.p.)는 gone, known, taken처럼 완료형을 만들 때 쓰는 동사 형태입니다.
주절의 조동사는 뜻에 따라 고릅니다. would have p.p.는 ‘~했을 텐데’라는 결과를, could have p.p.는 ‘~할 수 있었을 텐데’라는 가능성이나 능력을 나타냅니다. might have p.p.는 ‘~했을지도 모르는데’처럼 확신이 약한 추측입니다. 예를 들어 If you had asked me, I could have helped.는 ‘물어봤더라면 도울 수 있었을 텐데’라는 뜻입니다.
if절이 앞에 오면 두 절 사이에 쉼표를 넣습니다. I could have helped if you had asked me.처럼 주절이 앞에 오면 보통 쉼표 없이 씁니다. 동사가 have라면 If I had had more money처럼 had가 두 번 나옵니다. 앞의 had는 완료형을 만드는 조동사이고, 뒤의 had는 have의 과거분사이므로 오타가 아닙니다.
말하거나 편하게 쓸 때는 would have를 would’ve로 줄이고, if절의 had도 If I’d known처럼 줄입니다. 이때 if절의 ‘d는 had이고, 주절의 ‘d는 would입니다. ‘d 바로 뒤에 과거분사가 오면 had로, have나 동사원형이 오면 would로 봅니다. 그래서 If I’d known, I’d have called.는 If I had known, I would have called.를 줄인 문장입니다.
표준 문법에서는 if절에 would have를 넣지 않습니다. 구어에서는 If I would have known 같은 말이 들리기도 합니다. 그래도 시험이나 격식 있는 글에서는 If I had known으로 쓰는 편이 안전합니다.
해석은 ‘~했더라면 ~했을 텐데’, 실제 사실은 반대로

If I had left earlier, I would have caught the train.은 ‘내가 더 일찍 나섰더라면 기차를 탔을 텐데’로 해석합니다. 말하는 사람은 기차가 이미 떠난 뒤에 지난 일을 되짚고 있습니다.
실제 사실은 긍정과 부정을 뒤집고 단순 과거로 바꾸면 드러납니다. had left는 didn’t leave로, would have caught는 didn’t catch로 바뀝니다. 그러면 I didn’t leave earlier, so I didn’t catch the train.이라는 문장이 됩니다.
if절이 부정이면 hadn’t p.p.를 쓰고, 뒤집은 사실은 긍정문이 됩니다. If I hadn’t overslept, I wouldn’t have missed the train.은 ‘늦잠을 자지 않았더라면 기차를 놓치지 않았을 텐데’라는 뜻입니다. 실제로 남는 사실은 I overslept, so I missed the train.입니다. 해석이 어색하게 느껴지면 이렇게 실제 사실 문장을 만들어 가정의 방향을 점검해 보세요.
가정법 과거와 가정법 과거완료 차이
두 가정법은 가리키는 시점으로 나뉩니다. 가정법 과거는 지금 사실의 반대를, 가정법 과거완료는 이미 지난 과거 사실의 반대를 말합니다. 같은 부탁 상황에 두 형태를 넣으면 차이가 드러납니다.
If I had time, I would help you.는 ‘시간이 있다면 도와줄 텐데’로 해석합니다. 지금은 시간이 없어서 도와줄 수 없다는 뜻입니다. If I had had time, I would have helped you.는 ‘그때 시간이 있었더라면 도와줬을 텐데’로 해석하며, 실제로는 시간이 없어서 돕지 못했다는 뜻입니다.
| 비교 축 | 가정법 과거 | 가정법 과거완료 |
|---|---|---|
| 가리키는 시점 | 현재 | 과거 |
| if절 형태 | 동사 과거형 (had) | had p.p. (had had) |
| 주절 형태 | would + 동사원형 | would have p.p. |
| 해석 | ~라면 ~할 텐데 | ~했더라면 ~했을 텐데 |
형태의 시제와 의미의 시점은 한 칸씩 어긋납니다. 동사는 과거형인데 뜻은 현재이고, 과거완료형인데 뜻은 과거입니다. 그래서 If I had time을 ‘시간이 있었다면’으로 옮기면 시점이 틀어집니다. had만 보고 과거로 판단하지 말고 had 뒤에 과거분사가 붙었는지, 주절에 have p.p.가 있는지를 함께 확인하세요.
if 없이 Had I known으로 쓰는 도치 구문

가정법 과거완료에서는 if를 빼고 had를 주어 앞으로 보내도 뜻이 같습니다. 이렇게 어순을 바꾸는 것을 도치라고 합니다. if를 지우고 had와 주어의 자리를 맞바꾸면 되며, 주절은 그대로 둡니다.
If I had known you were sick, I would have called you.는 Had I known you were sick, I would have called you.로 바뀝니다. 두 문장 모두 ‘네가 아픈 줄 알았더라면 전화했을 텐데’라는 뜻입니다. 실제 사실로 뒤집으면 I didn’t know you were sick, so I didn’t call you.가 됩니다. 이때 부정으로 바뀌는 부분은 had known뿐이고, 상대가 아팠던 것은 실제 사실이므로 you were sick은 그대로 남습니다.
부정형은 not을 주어 뒤에 둡니다. If I hadn’t known은 Had I not known으로, If she hadn’t called me는 Had she not called me로 바뀝니다. Had she not called me, I would have missed the meeting.은 ‘그녀가 전화하지 않았더라면 나는 회의를 놓쳤을 거야’라는 뜻이고, 실제로는 전화를 받아서 회의를 놓치지 않았습니다. 표준적인 도치 구문에서는 Hadn’t she called me처럼 축약형을 앞으로 보내지 않으며, 이렇게 쓰면 부정 의문문처럼 읽힙니다.
도치형은 주로 격식 있는 글이나 문어체에서 볼 수 있습니다. 일상 대화에서 if 문장으로 말해도 의미는 달라지지 않습니다.
혼합가정법과 가정법 과거완료 구별하기
과거 조건이 지금의 결과로 이어지면 주절만 would + 동사원형으로 바꾼 혼합가정법을 씁니다. 주절에 would have p.p.를 그대로 두면 결과도 과거의 일이 되므로, 지금의 상태를 말하려면 주절의 시점을 현재로 옮겨야 합니다. 혼합가정법은 이처럼 if절과 주절이 서로 다른 시점을 가리키는 가정문입니다.
If I had taken the job, I would have moved to Seoul.은 ‘그 일자리를 잡았더라면 서울로 이사했을 텐데’로 해석합니다. 조건도 결과도 과거 시점의 일입니다. If I had taken the job, I would be in Seoul now.는 ‘그 일자리를 잡았더라면 지금 서울에 있을 텐데’로 해석하며, 결과는 현재의 상태입니다. 두 문장을 가르는 기준은 결과가 지금의 상태인지이며, 주절의 now, today, still 같은 단어가 단서가 됩니다.
다만 now 같은 단어가 늘 붙지는 않습니다. If I had taken the job, I would live in Seoul.은 ‘그 일자리를 잡았더라면 서울에 살고 있을 텐데’라는 뜻으로, 시간 부사가 없어도 지금의 거주 상태를 말하므로 혼합가정법입니다.
반대로 현재 조건이 과거 결과로 이어지는 혼합형도 있습니다. If I were more careful, I wouldn’t have made that mistake.는 ‘내가 더 꼼꼼한 사람이라면 그 실수를 하지 않았을 텐데’라는 뜻입니다. were more careful은 지금도 이어지는 성격을, wouldn’t have made는 이미 지난 실수를 가리킵니다.
조건과 결과의 시점을 따로 따져 보면 쓸 형태가 정해집니다. 먼저 if절의 조건이 지난 일인지 지금의 사실인지 보고, 이어서 주절의 결과가 과거의 일인지 지금의 상태인지 확인한 뒤 아래 조합에 맞춥니다.
- 조건도 결과도 과거: If + had p.p., would have p.p. (가정법 과거완료)
- 조건도 결과도 현재: If + 과거형, would + 동사원형 (가정법 과거)
- 과거 조건, 현재 결과: If + had p.p., would + 동사원형 (혼합가정법)
- 현재 조건, 과거 결과: If + 과거형, would have p.p. (혼합가정법)
함께 읽으면 좋은 글
- 관계대명사 what 해석과 that과의 차이를 예문으로 정리
- 동명사 뜻, 동명사만 목적어로 받는 동사 정리
- 과거분사 뜻 헷갈릴 때 현재분사와 나란히 비교하는 예문
- 전치사 뜻 종류별로 보기: 시간·장소·방향을 나타내는 말
- 관사 뜻 이해하기: a·an·the가 명사 앞에 붙는 이유
