경상남도 고성 출생. 1935년 휘문고등보통학교를 졸업한 뒤 1941년 일본 주오대학교(中央大學校) 법학부를 졸업하였다. 1948년부터 1950년까지 삼천포중학교, 삼천포여자중학교 교장을 역임하였다. 1950년에 무소속으로 경남 사천에서 제2대 민의원에 당선되고, 이듬해부터 남양학원(남양중) 이사장을 역임하였다.
1952년 국회에서 헌법기초위원에 선임되었으며, 민주당에 입당해 경남도당 부위원장 겸 사천군당위원장을 역임하였다. 1958년부터 1960년까지 민주당 소속으로 제4대 민의원이 되고, 1960년 내각책임제개헌안 기초위원장을 역임하였다. 같은 해 민주당 소속 제5대 민의원으로 당선됨으로써 3선의원이 되었다.
1960년 8월부터 9월까지 장면 내각의 교통부장관(제10대)을 역임했다. 이어 1960년 9월부터 1961년 5·16군사정변 전까지 제3대 국무원 사무처장을 지냈다. 이후 1963년 3월 신민당에 입당해 같은 해 5월 정무위원이 되었다. 1967년에는 신민당 정책심의위원회 의장이 되었고, 1971년에는 신민당 선거대책본부의 차장 겸 기획실장을 역임했다.
1971년부터 1973년까지 신민당 전국구 의원으로 제8대 국회에 진출했으며, 1973년부터 1979년까지 신민당 소속으로 진주·삼천포·진양·사천 지역에서 제9대 국회의원을 역임하여 5선을 기록했다. 1973년에 신민당 당무위원이 되었고, 유엔총회 한국대표와 1974년국제의원연맹(IPU) 한국대표를 역임했다.
1976에는 신민당 전당대회 의장을 역임했으며, 1985년부터 1988년 1월까지 민주화추진협의회(민추협) 지도위원을 지냈다. 한편 민주당 구파였음에도 불구하고 운석[장면]기념회 회장을 역임했다.