문제 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다. 해결 방안 아스키 코드를 활용해서 96과 123 사이라면 소문자, 64와 91 사이라면 대문자, 32라면 공백, 나머지는 숫자로 처리했다. 내 코드 import sys while True: S = list(sys.stdin.readline().strip('\n')) if not S: break count = [0 for _ in range(4)] while S: asc = ord(S.pop()) if 96 < asc < 123: count[0] += 1 elif 64 < asc < 91: count[1] ..
전체 글
문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 내 코드 import sys S = list(sys.stdin.readline().rstrip()) count = [-1 for _ in range(26)] L = len(S) for i in range(L): idx = ord(S[i]) - 97 if count[idx] == -1: count[idx] += i+1 print(*count) -1로 구성되어 있는 리스트를 알파벳의 개수 크기만큼 만들고, 알파벳의 아스키 코드를 인덱스 번호로 활용하여 나온 순서를 입력한다. 똑같은 알파벳이 중복되어 나올 경우를..
객체지향이란? 객체지향이란 프로그램 설계 방법론의 일종이다. 프로그램에 필요한 데이터를 추상화 시키고 객체(Object)라는 기본 단위를 만든다. 이렇게 만들어진 객체끼리 상호작용을 하는 것이 객체지향 프로그램이다. 객체 지향 프로그램은 유연한 유지 보수, 손쉬운 확장이 쉬워진다. 즉, 개발의 생산성이 높아진다. 모든 일에는 메뉴얼이라는 것이 존재하고 이는 길잡이 역할을 한다. SOLID 원칙이란 객체 지향 프로그램의 메뉴얼이다. 객체 지향 프로그래밍을 사용하는 여러 디자인 패턴은 모두 SOLID 원칙에 입각하여 만들어진 것이기 때문에, SOLID 원칙에 대한 개념을 제대로 잡고 가는 것이 중요하다. 1. SRP(Sigle Responsibility Principle : 단일 책임의 원칙) 클래스(객체)..
알파벳 개수 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성하시오. 해결방법 아스키 코드를 인덱스 번호로 활용해서 카운트하면 된다. 내 코드 import sys S = list(sys.stdin.readline().rstrip()) count = [0 for _ in range(26)] while S: count[ord(S.pop()) - 97] += 1 print(*count) 알파벳 개수를 25개로 착각하고 count list를 25 크기로 만들었다가 런타임 에러 발생 26으로 수정하니 해결됐다.

주저리 주저리... 저번 글에 나열한 것들 중 재직자특별전형 커뮤니티를 만들기로 했다. 근데 뭐 말이 커뮤니티지 이것 저것 내가 만들고 싶은 기능들을 구현해보는 것이 목적이다. 그러다 트래픽 높아지면 좋은거고 ... 개발 환경 처음 제대로 시작해보는 프로젝트라서 앞으로 변경될게 수도 없이 많을 것 같아서 큰 틀만 정해보았다. 1. Spring boot 학교 팀 프로젝트로 한 번 사용해본 경험이 있기도 하고 우리나라에서 가장 많이 사용하는 프레임 워크여서 백 단에서는 스프링 부트를 이용하기로 했다. 2. React 아직 리액트를 사용해본적은 없지만 아직 계획 단계이므로. 3. MariaDB 이것도 팀 프로젝트에서 사용해본 경험이 있어서 아마 마리아 디비를 사용하지 않을까 싶다. DB에 대해 더 공부해서 적..
대부분의 20대가 다 그렇듯 진로를 찾아 여기저기 방황하다 결국 서비스 개발 분야로 나의 미래를 정했다. 뒤에서 연구하고 개발하기 보다는 최전방에서 유저와 상호작용하며 이런 저런 벽을 뚫고 가는게 아무래도 내 적성에 맞는 듯하다. 본 프로젝트는 졸업 전까지 2년이라는 시간을 잡고 꾸준히 진행해나갈 예정이다. 목표 정하기 요 며칠동안 이런 저런 아이디어를 생각해봤다. 대학교 족보 거래 사이트 대학교에 와서 느낀 점은 공부를 잘하는 것보다 족보가 압도적으로 중요하다는 것이었다. 본인 2학년 때 나만 족보 없어서 혼자 개열심히 함; 물론 비싼 학비 내고 공부를 제대로 하는게 의미가 있긴 하다만, 누구는 족보가 있고 누구는 없고 이런건 너무 불공평하다는 생각이 들었다. 그리고 사실 암암리에 에타에서 족보를 돈주..
문제 후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오. 후위 표기식이란 ? 1 + 2 * 3 - D / E 이란 식이 있을 때 이 식을 중위 표기식으로 표현했다고 말한다. 이 식을 후위 표기식으로 바꾸면 1 2 3 * + D E / - 과 같다. 후위 표기식 -> 전위 표기식 과정 1 (2 * 3) + D E / - (1 + 2 * 3) D E / - (1 + 2 * 3) D / E - 1 + 2 * 3 - D / E 해결 방법 입력 받은 문자를 아스키 코드를 이용하여 정수로 처리하여 스택에 하나씩 집어 넣는다. 만약 문자일 경우 그냥 스택에 집어 넣고, 연산자일 경우에는 스택을 2번 pop하여 연산한다. 연산된 값은 다음 연산을 위해 다시 스택에 집..
문제 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오등큰수 NGF(i)를 구하려고 한다. Ai가 수열 A에서 등장한 횟수를 F(Ai)라고 했을 때, Ai의 오등큰수는 오른쪽에 있으면서 수열 A에서 등장한 횟수가 F(Ai)보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오등큰수는 -1이다. 예를 들어, A = [1, 1, 2, 3, 4, 2, 1]인 경우 F(1) = 3, F(2) = 2, F(3) = 1, F(4) = 1이다. A1의 오른쪽에 있으면서 등장한 횟수가 3보다 큰 수는 없기 때문에, NGF(1) = -1이다. A3의 경우에는 A7이 오른쪽에 있으면서 F(A3=2) < F(A7=1) 이기 때문에, NGF(3) = 1..

문제 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다. 예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다. 내 코드 1차 시도 import sys N = int(sys.stdin.readline()) nge = list(map(int, sys.stdin.readline()..