![[python] 백준 1076번 저항](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2a1WW%2FbtrjPQY5nFa%2F9IckCluIrbFXuKnkfrcyRk%2Fimg.jpg)
문제 요약 및 풀이 예제 1을 참고해보자. 값과 곱의 규칙은 10의 제곱수의 규칙과 같다고 볼 수 있다. 첫 번째 입력값 Yellow = 4 두번째 입력값 violet = 7 세번째 입력값 red = 100으로 출력은 4700이 된다. 마지막에 들어온 입력값은 곱으로 계산해주면 되고 나머지 입력값들은 뒤에 붙여주면 된다. 코드를 보자. 색상 값, 곱의 표를 dictionary로 표현하였고 입력이 3개라는 것을 이용하여 for문의 range가 0, 1, 2 총 3개의 범위이기 때문에 마지막 index인 2가 올 때 10의 제곱수를 곱해주도록 하였다. ex) input -> yellow, violet, red 색 yellow violet red 배열 인덱스 0 1 2 값 4 7 100 최종 출력 4700 이..
![[python] 백준 14652번 나는 행복합니다~](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F53UGc%2Fbtri5k7X4D0%2Fcfkgg13JfeB36eAUKkD0zk%2Fimg.jpg)
문제 풀이 처음에 배열을 이용하는 문제인 줄 알아 배열로 풀다가 시간 초과가 나게 되어서 입력 출력에 규칙이 보여 해결하였다. K가 들어오면 M인(열 개수) 만큼 나누어 몫과 나머지를 출력해주면 된다. 6 / 4 = 1, 2 14 / 4 = 3, 2 N, M, s = map(int, input().split()) print(s // M, s % M)
![[python] 위클리 챌린지 - 2주차 상호평가](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvt4TB%2FbtrhTK0AV0K%2Fx73n1Ay4hQ1AvUp5f6tCF1%2Fimg.jpg)
문제 설명 간단한 문제 설명 자기 자신을 평가한 점수가 다른 학생이 평가해준 점수보다 유일한 최고점이거나 최저점이라면 평균을 구할 때 제외한다. 단, 최고점이나 최저점이 여러 개라면 제외하지 않고 평균을 구하고 학점을 부여한다. 문제 풀이 처음에 주어진 함수는 이렇다. def solution(scores): answer = '' return answer 위의 메서드와 입출력 예를 보면 2차원 배열의 scores가 인자로 들어가 있다. 입출력 예 1번을 풀어서 보여주겠다. 입력을 받으면 1번과 같이 표현을 할 수 있다. 행(가로) 방향으로 보면 A학생이 A~E학생의 평가한 점수를 나타내는 것이고 열(세로) 방향으로 보면 A학생의 점수를 볼 수 있게 된다. 그리고 자기 자신을 평가한 점수가 간단한 설명에서도..
![[python] 백준 2863번 이게 분수?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXS2c1%2FbtrhNgSIJlQ%2F3dP9j2tewWzW3MnASksxp0%2Fimg.jpg)
문제 풀이 2*2짜리 표 -> 2차원 배열을 이용 시계방향으로 회전 후에 4회전 시에는 원점으로 돌아오기 때문에 회전을 담당해줄 메서드, 표의 값을 계산해줄 메서드가 필요. 값을 스왑 해주기 위해 시계방향으로 1회전, 2회전, 3회전 돌렸을 때의 좌표값들을 적어보았고 그 좌표값들을 스왑 해주기 위해 temp 변수를 하나 초기화해주어 swap 해주었다. 간단하게 if문으로 돌릴 수도 있었겠으나 요즘은 배열에 대해서 좀 연습을 하는 중이라서 배열을 써보았다. 완성된 코드!!😀😀 # swap def swap(l): temp = l[0][0] l[0][0] = l[1][0] l[1][0] = l[1][1] l[1][1] = l[0][1] l[0][1] = temp return l # 계산 def cal(l): ..
![[python] 위클리 챌린지 - 1주차 부족한 금액 계산하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQoFqG%2FbtrhjYj6jq0%2F9KIuJ79mCXykOBhaQKkSH1%2Fimg.jpg)
해당 문제는 전에 java로 한번 풀었던 것이다. [java] 프로그래머스 - 부족한 금액 계산하기 내가 본 프로그래머스 문제들은 대부분 어려워 보였는데 이웃님들 중 한 분께서 프로그래머스 문제를 python으로 푸셨다. 문제 내용을 보고 나서 오! 나도 풀 수 있겠다 싶어서 풀어보았다. 제한 begin-dev-awos.tistory.com price : 놀이기구 이용료, money : 내가 가지고 있는 돈, count : 놀이기구 탄 횟수 문제는 간단하게 설명하자면 놀이기구를 타는데 놀이기구를 한번 타면 처음 이용료 그대로 n번 탔을 시 price * n으로 누적이 된다고 한다. 입력 price : 3, money : 20, count : 4 ex) 3번 탔을시 총금액 3*1 + 3*2 + 3*3 + ..
![[python] 백준 2052번 지수연산](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWlZxp%2FbtrgACxc0q9%2Fpo9OKFKKwV6Adg8RpnQkq0%2Fimg.jpg)
문제 요약 및 풀이 문제 자체는 간단하다. 2의 -N승을 계산하면 된다. 하지만 기본적으로 표현할 수 있는 소수점 자릿수를 넘어가게 되면 e^n, e^-n으로 표기가 된다. 그래서 표현할 수 있는 소수점 자리수를 늘리려면 늘리고 싶은 자리 개수를 sosu_N이라고 생각하면 "%. sosu_Nf"와 같이 만들어 주면 된다. 대략 sosu_N을 300으로 조절하면 아래와 같은 결과를 볼 수 있다. 0 같은 경우 rstrip() 메서드를 통해 오른쪽에 있는 0을 지워주면 된다. 완성된 코드!! 😀😁 print(("%.300f" % (1/(2**int(input())))).rstrip("0"))
![[python] 백준 2154번 수 이어 쓰기 3](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwiHQF%2FbtrgoKOnzi9%2FEWVuPWz5EWngV557dqrIv1%2Fimg.jpg)
문제 요약 및 풀이 문제는 간단하다. N 15를 입력받았을 때 해당 15가 몇 번째에 나타나는지만 알면 된다. 먼저 N의 범위가 1 ≤ N ≤ 100,000 이기 때문에 1부터 100000까지 문자열로 붙여준 후에 find나 index 함수로 해당 위치의 값을 뽑아주면 된다. 단지 find나 index의 값이 0부터 시작이기 때문에 1을 더해주고 결과를 반환해주면 된다. ex) 입력이 1이라면 1번째라고 결과가 나와야 하지만 배열에서 index는 0부터 시작이기 때문에 결과가 0이 나오게 된다. 완성된 코드!!😀😀 s = "" for i in range(1, 100001): s += str(i) print(s.index(input())+1)
![[python] 백준 20112번 사토르 마방진](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7MVcX%2FbtrfBrWzkbX%2FGT5eP5YFreOG2benVJ1zTK%2Fimg.jpg)
문제 요약 및 풀이 N을 입력받으면 N X N 만큼 크기의 단어 집합이 만들어진다. 이 단어 집합은 가로 단어와 세로 단어가 같다. (사토르 마방진의 개념) 사토르 마방진이면 YES를 아니면 NO를 출력 2차원 배열로 풀 생각으로 그려보았다. N X N 만큼이라고 했으니 2차원 배열로 [N][N] 크기만큼 두 개의 배열을 만들어 놓는다. 사토르 마방진은 가로 단어와 세로 단어가 같다고 했기 때문에 두 개의 배열(가로 단어 집합, 세로 단어 집합)을 만들어야겠다고 생각했다. 입력받는 값들을 보면 가로로 단어를 입력받기 때문에 해당 집합을 그림과 같이 나타내 보면 세로는 대칭이라고 볼 수 있다. 2차원 배열의 특징인 [i][j]를 [j][i]로 스왑 하여 세로 단어 집합의 배열을 만들면 된다. 이해가 잘 되..
![[python] 백준 11723번 집합](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUtpRE%2FbtrfhpLY8CS%2FEsP2X89N6g7ljj65QNmRFk%2Fimg.jpg)
문제 풀이 및 요약 문제 이해가 잘 안 되시는 분들에게 직접 그림을 그려서 보여드리겠다. check x를 통해서만 x가 있는지 없는지를 판단하여 있으면 1을 출력, 없으면 0을 출력한다. 나머지 add, remove, toggle / empty, all 등은 값 삽입, 삭제가 이루어진다. 문제에도 나와 있다시피 집합이기 때문에 set()을 써야 한다. 얼핏 보면 set 도 {} 중괄호를 사용하고 있어 {} 중괄호를 사용하는 딕셔너리와 헷갈릴 수도 있으나 set 같은 경우 값이 하나 {1, 2, 3}이고 딕셔너리 같은 경우 {'key1' : 'value1', 'key2' : 'value2'}와 같이 key와 value로 이루어져 있다. 처음에 set()을 생각을 못하고 list로 접근하여 풀어서... 당연..
![[python] 백준 1094번 막대기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2sUUW%2FbtrfhJKdmqI%2F4QHS1foqa9aJLGeETynLZK%2Fimg.jpg)
문제 요약 및 풀이 문제를 보자마자 아 그림으로 풀어야겠다 싶어서 그림으로 그려봤다. 순서는 ① -> ② -> ③ 순대로 보면 될 것 같다. 64를 반으로 나누면 32, 32 2개의 막대가 나오는데 하나의 막대는 버려야 하므로 절반으로 나누어 떨어질 때까지 문제에 있는 2가지 과정을 반복하다 보면 ②번과 같은 64 32 16 8 4 2 1 이 보여진다. 수 들의 공통점은 2^n 승이라는 것. 즉, 2진수로 표현이 가능하다. ③번과 같이 10진수로 입력을 받아 2진수로 변환을 해준후 1의 개수가 총 몇 개인지를 반환해주면 된다. 완성된 코드!!👍😊 print(bin(int(input()))[2:].count('1'))