본문 바로가기

Computer Science&Engineering/코딩테스트

(59)
[백준 9012] 괄호 www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 스택처럼 '(' 일때 push하고, ')' 일때 pop 하면 되겠다. 굳이 스택을 구현하지 않고, '(' 일때는 +1, ')' 일때는 -1 을 해서 0이 되면 VPS로 판단하기로 했다. 검사하는 도중에 0보다 작아지면 for문을 탈출한다. VPS 는 1 이후 -1 이 나와서 0이 되어야 하기 때문! -1이 먼저 나오거나 -1이 1보다 어러번 나오면 안된다. # 제출 코드 #incl..
[백준 10828] 스택 문제 링크 www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 스택의 동작을 구현하도록 한 문제이다. 처음에는 각각의 동작을 함수로 구현했으나, 나중에 생각해보니 단순 출력만 하면 되는데 굳이? 라는 생각이 들어 그냥 바로 출력해버리도록 구현했다. 제출 시에 함수 return 을 제대로 해주지 않으면 오류가 나서, 그냥 단순하게 구현하는게 베스트라는 생각이 들었다. main 함수도 return 0; 가 없으면 에러난다. # 제출 코드 #incl..
[백준 별찍기 1~9] 쉬운 별찍기 모음 #별찍기꿀팁 #별찍기9개 #피라미드 #역피라미드 #모래시계찍기 #마름모찍기 # 저의 별찍기 꿀팁은 줄 변수를 line 으로 잡고, 별을 star, 공백을 blank 로 적는겁니다. 이게 되게 별 것 아닌 것 같지만 별찍기 할 때 도움이 되더라고요. [백준 2438번] 별찍기 -1 int main(){ int N; int line, star; scanf("%d", &N); for(line = 0; line < N; line++){ for(star = 0; star
[백준 10818] 최소, 최대 구하기 문제 링크 www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 변수 N에 N개의 정수 개수를 입력받고, tmp 에 정수를 입력받아서 계산해주면 될 것 같아요. 최대 max, 최소 min 변수를 만들어주고, 입력받을 때마다 비교해서 제일 큰 수와 제일 작은 수를 찾을 수 있어요. # 제출 코드 #include int main() { int N, tmp, max, min; scanf("%d", &N); scanf("%d", &tm..
[백준 8393] 합 # 1부터 N까지 합 문제 링크 www.acmicpc.net/problem/8393 8393번: 합 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. www.acmicpc.net 1부터 N까지 합이니까 for문을 사용해도 되고 while 을 사용해도 된다. 다만, 이 때는 시간 복잡도가 O(N)이 된다. 단순한 계산식을 활용해서 O(1) 코드를 구현할 수 있다. #include int main() { int N, sum=0; scanf("%d", &N); while(N>0){ sum += N--; } printf("%d",sum); } ✔ sum += N 을 N 번 계산해주어야 한다. #include int main() { int N, sum=0; scanf("%d", &N); printf("%d", N*..
[백준 1924] 2007년 #요일구하기 문제 링크 www.acmicpc.net/problem/1924 1924번: 2007년 첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. www.acmicpc.net 변수 x, y 에 월과 일을 입력받고, 해당 일까지 날짜 수를 구해서 7로 나눈 나머지에 따라서 요일을 출력해주면 된다. 예를 들어 1월 1일이 월요일일때, 일주일 뒤인 1월 8일 또한 월요일이 된다. 날짜를 7로 나눈 나머지가 1일 때 월요일이다. 이처럼 7로 나눈 나머지가 2일 때 화요일, 3일 때 수요일, 4일 때 목요일이 되도록 구성해주면 된다. # 제..
[백준 2739] 구구단 링크 www.acmicpc.net/problem/2739 2739번: 구구단 N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다. www.acmicpc.net N을 입력받아야 하니까 변수 N 선언하고, 또 1~9까지 반복해줘야 하니 i 를 선언해준다. for 문을 사용해서 1부터 9까지 곱한 값을 출력해준다. # 제출코드 #include int main() { int N, i; scanf("%d", &N); for(i=1; i
[백준 2742] 기찍 N 링크 www.acmicpc.net/problem/2742 2742번: 기찍 N 자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오. www.acmicpc.net 이전 글인 N찍기는 for 문으로 구현했는데, 이번에는 while 문으로 구현해봤다. # 제출 코드 # include int main(){ int N; scanf("%d", &N); while(N>0){ printf("%d\n", N--); } }