[백준 문제풀이 : 5622번] 파이썬 - 다이얼
·
Algorithm/Baekjoon
처음에는 길게 이프와 엘이프를 이용해서 각 알파벳별로 해당 시간을 더해주는 식을 짯었는데 작동은 하는데 왜인지 모르겠지만 더해지는 값이 이상하게 나왔다 1/2수준으로 나옴.. 결국 이유는 찾지 못하고 다른 방법으로 풀어야겠다 싶어 구글링을 해본 결과 다들 다이얼이라는 변수를 지정하여 리스트를 'ABC','DEF'... 이런식으로 만들어 놓고 단어s가 해당 다이얼에 있다면 타임을 더해주는 이중 포문을 이용하여 푸는 것을 확인했다. 그래서 이중 포문을 이용하여 똑같이 풀어보았다. s = list(input()) sum = 0 dial = ['ABC','DEF','GHI','JKL','MNO','PQRS','TUV','WXYZ'] #다이얼을 만들어줌 for j in range(len(s)): #입력한 단어의 ..
[백준 문제풀이 : 2908번] 파이썬 - 상수
·
Algorithm/Baekjoon
처음에는 두 수를 입력받아서 리스트로 변환하여 reverse를 이용하여 풀려고 했었다. 근데 리버스를 이용해서 하려고하니 자꾸 뭔가 복잡해지고 꼬이고 잘안풀려서 다른사람들은 어떻게 풀었는지 확인해봤는데 정말 간단하게 [::-1]을 이용하여 역순으로 바꾸는 방법이 있었다... 그래서 해당 방법을 이용하여 정말 짧은 코드로 풀 수 있었다. a,b = input().split() a = int(a[::-1]) b = int(b[::-1]) if a > b : print(a) else : print(b)
[백준 문제풀이 : 10809번] 파이썬 - 알파벳 찾기
·
Algorithm/Baekjoon
소문자로만 이루어진 단어 하나를 입력받고, 그 소문자가 알파벳 a~z를 대조했을때 단어의 a~z가 단어의 몇번째자리에 위치했는지 파악하는 문제이다. 만약 a~z중에 단어에 없는 알파벳이 있다면 해당알파벳의 자리는 -1로 표기한다. 우선 for문으로 a~z까지 26번의 반복문을 돌려 리스트(단어)가 존재한다면 또 다시 반복문을 돌리는 if문을 활용했다. 존재하지 않는다면 -1로 표기하는 if문을 만들고 존재한다면 단어의 개수만큼 반복문을 다시 돌려서 몇번째 자리에 존재하는지 표기하는 반복문을 돌려준다. s = str(input()) list_s = list(s) for i in range(26): #알파벳의 개수만큼 반복 if chr(i+97) in list_s: #알파벳a의 아스키코드인 97만큼 더한숫자..
[백준 문제풀이 : 27866번] 파이썬 - 문자와 문자열
·
Algorithm/Baekjoon
1차원배열이 끝나고 문자열에 들어왔다. 문자열을 입력받아서 그 문자열안의 알파벳을 하나하나 쪼개서 몇번째 순서의 알파벳은 무엇인지 추출해내는 작업이다. 굉장히 간단한 문제인데 문제는 하나하나 쪼개는 방법을 까먹었다. 역시나 오늘도 구글링을 하여 쪼개는 방법을 알아봤는데 너무나도 간단했다. input으로 문자열을 입력받고 list(input)을 하면 알아서 구성요소가 하나하나 쪼개진다. s = input() i = int(input()) list_s = list(s) print(list_s[i-1]) s = list(input())으로 한줄 더 줄일 수 있을 것 같긴한데 시도는 안해봤다.. 다음문제 풀때는 한번 시도해봐야겠다.
[백준 문제풀이 : 3052번] 파이썬 - 나머지
·
Algorithm/Baekjoon
슬슬 문제를 보고 어떤식으로 이문제를 풀어야하는가 고민하고 계획을 세워야 할 때가 온 것 같다. 문제를 보자마자 아 이문제는 어떤식으로 풀어야겠다! 라고 바로 떠오르지 않는다. 3~5분정도 혼자 고민을 해보고 나온 답은, 먼저 리스트에 값을 집어넣는 코드를 짠 뒤, 또 다른 리스트 함수를 정의해주고,입력값 리스트를 42로 나눈 나머지 값이 result 리스트함수에 존재하지 않는다면 append하는 방식으로 새로운 리스트를 작성했다. 그리고 마지막으로 result리스트의 값의 개수를 출력하도록 하는 코드를 쓰면 풀릴 것 같았다. a_list = [] for _ in range(10): a = int(input()) a_list.append(a) result_list = [] for i in range(le..
[백준 문제풀이 : 5597번] 파이썬 - 과제 안 내신 분..?
·
Algorithm/Baekjoon
입력과 출력 둘다 한줄에 값 한개씩만 입,출력하기 때문에 간단하게 포문을 돌려서 입력을 쭈욱 받아, 다시 포문을 돌려 만약 i값이 리스트안에 없다면 출력하게끔 하는 코드로 만들어 보았다. n = [] for _ in range(28): a = int(input()) n.append(a) for i in range(30): i += 1 if i not in n: print(i) 이 문제의 경우에는 다른 방법으로도 풀 수 있을 것 같다는 생각에 다른 사람들은 어떻게 풀었는지 찾아보기로 했다 students = [i for i in range(1,31)] for _ in range(28): applied = int(input()) students.remove(applied) #소거 print(min(stude..
[백준 문제풀이 : 10810번] 파이썬 - 공 넣기
·
Algorithm/Baekjoon
처음 문제를 봤을 때 하나의 리스트를 만드는 것이 아니라 여러개의 리스트를 만들어서 각 리스트변수 안에 원소가 어떤 것들이 들어가있는지 전부 파악해야되는 문제인줄 알고 한참을 해맷다... 주머니에 공을 넣을 때 같은번호의 공이면 헌 것을 빼고 새 것을 넣는다는 의미인줄 알았는데 다른번호여도 기존의 공을 빼고 새로운 공을 다시 집어넣는 작업이었던 것이다. 한마디로 하나의 리스트로 새로 입력받기만 하면 되는 문제..! (점점 가면갈수록 문제이해하는 것이 힘들어진다...) n,m = map(int, input().split()) basket = [0] * n for _ in range(m): i,j,k = map(int, input().split()) for x in range(i,j+1): basket[x-..
[백준 문제풀이 : 2562번] 파이썬 - 최대값
·
Algorithm/Baekjoon
첨에 문제를 대충읽고 출력값만 보았을때 최댓값과 최소값을 구하는 문제인줄알고 max와 min을 사용했다가 한번 오답이 나왔다 머쓱; a = [] for _ in range(9): a.append(int(input())) print(max(a)) print((a.index(max(a))+1)) 먼저 a라는 변수에 리스트를 만들어주고 append를 이용해서 하나하나 입력을 받았다. 문제에 9개의 자연수라고 공시되어있었으니 굳이 반복횟수는 입력받지않고 9번으로 고정 마지막줄에 .index는 해당 리스트안에서 몇번째 원소인지 찾아내는 함수인데 이게 기억이 안나서 사실 리스트안에서 특정값 위치찾는 법 이라고 검색해서 알아냈다... ㅋㅋ 그리고 리스트는 기본적으로 0부터 시작하기 때문에 +1을 추가해서 적어주었다.